problem 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
for each n, output n! in one line.
sample input
123
sample output
126
這道題目有一些東西特別要注意:
1.0的階乘是存在的!0!=1,我當初提交這道題目是在這一點上吃了不少的虧!我開始是是寫的while(cin>>n && n>0);交上去的時候老是報錯!但是我就納悶了,沒錯啊!後來才發現,這句應該寫成while(cin>>n && n>=0);或者while(scanf("%d",&n)!=eof);
2.10000的階乘是在是太大了!我的陣列開4000居然還是錯,開8000還錯!後來索性開個10000,居然對了!太吃驚!
//首先需要肯定,程式是正確的
//這算是大數乘除法!記住他們是如何處理的!由於資料很大,用基本資料型別根本無法滿足要求,只能用陣列來表示!
//大數乘法!10000!的階乘是在太大!幾次陣列開小了都報錯誤!
#include #include#includeusing namespace std;
#define max 10000
#define base 100000//base只是乙個基度,對最終取值並沒有影響,相反,base取值愈大,計算量愈小
//base發生改變的時候,下面的輸出也要相應地做出調整,否則也會輸出錯誤答案!除非當base取10!
int h[max];
//這是我第二次接觸大數的乘法!現在複習一下吧!很好的演算法!
int main()
for(j=0;j
杭電ACM 1042 大數階乘 N
原題位址 首先定義乙個足夠長的陣列。拿10000的階乘為例,最後的結果長度是35660位,所以我們定義乙個40000個成員的陣列就可以了。int result 40000 其核心思想就是把計算結果每一位上的數字儲存到乙個陣列成員中,例如 把124儲存至陣列中,儲存結果應該是 result 0 4 r...
杭電ACM 1042 N (還需再看)
problem 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 for each n,outp...
HDU 1042 N 大數乘法 C語言
這是一道簡單的數學題,求乙個數 n 的階乘。但是問題是題中n給的非常大 0 n 10000 用for迴圈來做顯然不行了。1.開闢乙個夠大的陣列,保證大於1000!所佔的位數,我是以最大情況來估算,即1000個1000相乘,開一百萬吧,反正我們老大 miyu 說了陣列空間爛便宜。2.然後就是挨個來乘了...