求10000以內n的階乘 OpenJ_Bailian - 2731
阿新 • • 發佈:2018-12-01
求10000以內n的階乘。
Input
只有一行輸入,整數n(0<=n<=10000)。
Output
一行,即n!的值。
Sample Input
100
Sample Output
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; int a[100000010]; char c [60]; int main() { //從1乘到n int i,len,n; scanf("%d",&n); a[1]=1; len=1; for(int k=2; k<=n; k++) { for(i=1; i<=len; i++) { a[i]=a[i]*k; } for(i=1; i<=len; i++) { if(a[i]>=10) { a[i+1]+=a[i]/10; a[i]%=10; } } while(a[len+1]>0) { len++; a[len+1]=a[len]/10; a[len]=a[len]%10; } } for(i=len; i>=1; i--) printf("%d",a[i]); }