(對於自然數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...