NYOJ 大數階乘

2021-07-14 20:56:05 字數 703 閱讀 2158

描述

我們都知道如何計算乙個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它?

輸入 輸入乙個整數m(0< m<=5000)

輸出 輸出m的階乘,並在輸出結束之後輸入乙個換行符

樣例輸入

樣例輸出

#include 

#include

#define max 20000//最大數5000 5000*4

int main()

} for(i=max-1;i>=0;i--)

//把0篩選掉

for(j=i;j>=0;j--)

//倒著輸出

printf("\n");

return

0;}

學習感想:

大數的階乘:用陣列存放資料

5000!=1* 2 * …*5000

5000!的位數=㏒10(1* 2* 3* 4* 5* ……*5000)+1

eg:㏒10(100)=2 位數=2+1

陣列大小可以用最大數的位數*最大數(個人理解)

迴圈處理每個陣列中超過10的數,若數值超過10,則需要進製,將位數加1,原來的數除以10,商數加前一位數的數值後存回前一位數的陣列中,再將餘數存回原來位數的陣列中。

NYOJ 28 大數階乘

題意 對於比較小的n,求其階乘的時候可以用遞迴解決。但是如果n很大的時候,比如1000,那麼n 肯定超出整形資料所能表示的範圍。因此必須採用其它方法解決,通常解決大數運算資料超出範圍的問題時採用陣列去模擬。其實求算n 可以看成是每次兩個整數相乘的過程,因此可以模擬成大數相乘的過程。只是需要增加一些變...

nyoj 28 大數階乘

就是個簡單的高精度,只是一開始我打表超記憶體了,然後用了各種技巧硬是把記憶體縮到了題目要求以下 5w kb 感覺挺爽的,如下 1 include2 include3 include4 include5 using namespace std 6 typedef long long ll 7 cons...

nyoj 階乘之和

階乘之和 描述 給你乙個非負數整數n,判斷n是不是一些數 這些數不允許重複使用,且為正數 的階乘之和,如9 1!2 3 如果是,則輸出yes,否則輸出no 輸入 第一行有乙個整數0 輸出如果符合條件,輸出yes,否則輸出no 樣例輸入 29 10 樣例輸出 yes no 方法一 includeint...