输入一个数字,范围在1~10000之间,输出其的阶乘数。
之前所做的都是小数的阶乘,用for足够,但是10000的阶乘早就报数据了。
#include<iostream>
using namespace std;
int main()
{
int n,i,j,c,t;
while(cin >> n)
{
int a[10000];
a[0] = 1;
t = 0; //标记一个数字在被拆分后放在了数组的几个位置
for(i=1;i<=n;++i)
{
c = 0; //表示进位,
for(j=0;j<=t;++j)
{
a[j]=a[j]*i+c;
c = a[j] / 100000;//if > 100000了时
a[j]%=100000;
}
if(c!=0)
{
t++;
a[t] = c;
}
}
cout << a[t];
for( i = t-1; i >= 0; --i)
cout<<a[i];
cout << endl;
}
return 0;
}