階乘和(高精度演算法)

2021-08-21 19:24:22 字數 754 閱讀 4389

(對於自然數n的階乘,當n比較小時,可以32位整數int範圍內準確表示 。例如12!=479001600<2147483647(231-1) 

而20!=2432902008176640000<9223372036854775807(263-1)可以在64位整數long long int範圍內準確表示 ,但是

n取值更大時,n!只能使用浮點數計算,從而產生誤差 )

已知正整數n(n<=100),設s=1!+2!+3!+...n!。其中"!"表示階乘,即n!=1*2*3*……*(n-1)*n,如:3!=1*2*3=6。

請程式設計實現:輸入正整數n,輸出計算結果s的值。

樣例輸入:4

樣例輸出:33

思路:階乘和求和分別放在兩個陣列裡,每個數求階乘時每迴圈一次都要判斷是否要進製,每個數本身的階乘求好就先求一下和,也要注意進製。最後注意因為測試多組資料,陣列要清零。

#include#includeusing namespace std;

const int maxn=10000;

int main()

,sum[maxn]={};

sum[0]=0;

k=1,t=1;

for(int e=1;e<=n;e++) }}

for(int p=0;p=10)

if(sum[p]>=10)

}for(int q=1;q=0;i--)

cout<}

}

高精度階乘

問題描述 輸入乙個正整數n,輸出n 的值。其中n 1 2 3 n。演算法描述 n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a 0 表示a的個位,a 1 表示a的十位,依次類推。將a乘以乙個整數k變為將陣列a的每乙個元素都乘以k,請注意處理相...

高精度階乘

問題描述 輸入乙個正整數n,輸出n 的值。其中n 123 n。演算法描述 n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a 0 表示a的個位,a 1 表示a的十位,依次類推。將a乘以乙個整數k變為將陣列a的每乙個元素都乘以k,請注意處理相應的...

高精度之階乘和

之前只會求高精度的階乘,不知道他們怎麼求和,經過別人的知道 特地感謝某的博主的指導 然後知道了這個新的求階乘和的方法 首先先看一下之前我是怎麼求階乘的 就是類似於我之前求斐波拉契數列的時候求的方法 然而這種方法,不好來求階乘和 include include int a 10010 10010 in...