求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]);
}