有关大数据n阶乘的算法:
传统的用for或递归只能算小数据,如果要算1000!则不能。对于大阶乘可以用数组来搞定,用传统的方法,满10进1则可:
以下是代码:
#include<string.h>
int n[50000];
int main()
{
int q,c,r,kk;
while(scanf("%d",&c)!=EOF)
{
memset(n,0,sizeof(n));
int d=1,e=0,g=1;
n[1]=1;
n[0]=1;
for(d=2; d<=c; d++)
{
e=1;
while(e<=g)
{
n[e]=n[e]*d;
e++;
}
int a,b=0;
while(b<=g)
{
if(n[b]>9)
{
a=n[b]/10;
n[b]=n[b]%10;
b++;
n[b]+=a;
if(b>g)
{
g=b;
}
}
else
{
b++;
}
}
}
kk=1;
while(n[kk]==0)
{
kk++;
}
printf("%d\n",n[kk]);
}
return 0;
}