1126: 高精度阶乘
题目描述
编程求n!的值,n<=1000。
输入
一个整数
输出
一个整数
样例输入
5
样例输出
120
1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 int main() 5 { 6 int clong=1,ans=0,n,a[100000]={0}; 7 a[1]=1; 8 cin>>n; 9 int i,j; 10 for(i=1;i<=n;i++) 11 { 12 for(j=1;j<=clong;j++) 13 a[j]=a[j]*i; //每次求出阶乘的值 14 for(j=1;j<=clong-1;j++) 15 { 16 a[j+1]+=a[j]/10; //大于10的放前面 17 a[j]%=10; //留下一位 18 } 19 while(a[clong]>=10) 20 { 21 clong++; 22 a[clong]=a[clong-1]/10; //大于10的放前面 23 a[clong-1]%=10; //留下一位 24 25 } 26 } 27 for(i=clong;i>=1;i--) 28 cout<<a[i]; 29 }
***阶乘值求出来,然后诸位变成个位数放到数组里面,然后倒叙输出。
其实还是有点乱。。。。。。。