1. 程式人生 > >NYOJ:28-大數階乘

NYOJ:28-大數階乘

時間限制:3000 ms | 記憶體限制:65535 KB
難度:3

描述
我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它?
輸入
輸入一個整數m(0< m<=5000)
輸出
輸出m的階乘,並在輸出結束之後輸入一個換行符
樣例輸入
50
樣例輸出
30414093201713378043612608166064768844377641568960512000000000000

程式碼:

#include<iostream>
#include<stdio.h>
#include<string.h>

using namespace
std; int f[50000]; int main() { int j,m,n,i,flag,k; while(scanf("%d",&n)!=EOF) { memset(f,0,sizeof(f)); f[0]=1; m=0; for(i=2; i<=n; i++) { for(j=0,flag=0; j<=m; j++) //m代表最高位 { k=f[j]; f[j]=(k*i+flag)%10
; flag=(k*i+flag)/10; } while(flag) //有可能進位為幾位數,及時更新長度m { f[++m]=flag%10; flag=flag/10; } } while(m>=0) cout<<f[m--]; cout<<endl; } return 0; }

相關推薦

NYOJ 28 大數(JAVA)

題目:大數階乘時間限制:3000 ms  |  記憶體限制:65535 KB描述我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它?輸入輸入一個整數m(0<m<

nyoj 28大數

描述 我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它? 輸入 輸入一個整數m(0<m<=5000) 輸出 輸出m的階乘,並在輸出結束之後輸入一個換

NYOJ:28-大數

時間限制:3000 ms | 記憶體限制:65535 KB 難度:3 描述 我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它? 輸入 輸入一個整數m(0< m<=5000) 輸出 輸出m的階乘,並在

NYOJ 28.大數大數問題)

/*描述 我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它? 輸入 輸入一個整數m(0<m<=5000) 輸出 輸出m的階乘,並在輸出結束之後輸入一個換行符 樣例輸入 50 樣例輸出30414093201713378043612

NYOJ.28.大數

28.大數階乘 時間限制:3000 ms | 記憶體限制:65535 KB 難度:3 描述 我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它? 輸入 輸入一個整數m(0<m<=5000) 輸出 輸出m的階乘,並在輸出結束之後輸入

nyoj 28 大數

描述 我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它? 輸入輸入一個整數m(0<m<=5000) 輸出輸出m的階乘,並在輸出結束之後輸入一個換行符 樣例輸入 50

NYOJ,28,大數

大數階乘 時間限制:3000 ms  | 記憶體限制:65535 KB 難度:3 描述 我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它? 輸入 輸入一個整數m

NYOJ 28.大數

/* 大數階乘 輸入 輸入一個整數m(0<m<=5000) 輸出 輸出m的階乘,並在輸出結束之後輸入一個換行符 樣例輸入 50樣例輸出 30414093201713378043612608166064768844377641568960512000000000

南陽理工題目28大數

大數階乘 時間限制:3000 ms  |  記憶體限制:65535 KB 難度:3 描述我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它? 輸入輸入一

nyoj 大數 28

#include<stdio.h> #include<string.h> int a[3270];//其實我先開的很大,後來通過a[0]的值判斷,然後改的小了,儘量佔得空間少一點 int main() { int n; while(~scanf("%d",&n)

NYOJ---大數---28

大數階乘時間限制:3000 ms | 記憶體限制:65535 KB 難度:3 描述 我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它? 輸入 輸入一個整數m(0<m<=5000) 輸出 輸出m的階乘,並在輸出結束之後

nyoj 大數

大數階乘 時間限制:3000 ms  |  記憶體限制:65535 KB 難度:3 描述             我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出

南陽oj 大數 題目28

 啊啊啊啊啊啊啊啊啊學的太少了<h2>大數階乘</h2><div class="problem-ins"> 時間限制:<span class="edita

題目28大數

題目連結: 描述 我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它? 輸入 輸入一個整數m(0<m≤5000) 輸出 輸出每組測試資料中揹包內的物品的價值和,每次輸出佔一行。 樣例輸入 50 樣例

斯特林(Stirling)公式 求大數的位數

href put || tdi code const 但是 body https 我們知道整數n的位數的計算方法為:log10(n)+1n!=10^m故n!的位數為 m = log10(n!)+1 lgN!=lg1+lg2+lg3+lg4+lg5+...........

codewars--js--Large Factorials--+大數

ref 階乘 clas python count .cn exp pre n+1 問題描述: In mathematics, the factorial of integer n is written as n!. It is equal to the product of

codevs 1488 GangGang的煩惱 大數

codevs 1488 GangGang的煩惱 大數階乘 傳送門:http://codevs.cn/problem/1488/ 使用大數階乘的模版即能A該題,原理不難理解,就是用陣列來儲存階乘的結果,主要就是按位進行處理,包括進位的處理

大數——詳解講解

題目詳情:NYOJ-大數階乘       階乘相信大家都不陌生,簡單一點的迴圈遞迴都可以解決。              在這裡將要講解的

N! (n的)(大數

Description Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N! Input One N in one line, process to the end of file. Output

大數or相乘

大數相乘或者階乘不能用傳統乘號直接來原因是乘出來數太大了,計算機記憶體受不了,比如12!為億級,100!有97位;程式設計界處理這類大數問題一般這麼處理: 如果現在要求:2746512,那麼乘的過程是: 對於個位:312=36,那麼可以斷定27465*12的個位數一定是6,所以我們把個