#include <stdio.h>
int main(void)
{
int N;
int a[4000];
int i,j,p;
a[0]=1;a[1]=1;
scanf("%d",&N);
for(i=2;i<=N;i++)
{
p=0;
for(j=1;j<=a[0];j++)
{
a[j]*=i;
a[j]+=p;
p=a[j]/10;
a[j]%=10;
}
while(p)
{
a[0]=j;
a[j]=p%10;
j++;
p/=10;
}
}
for(i=a[0];i>=1;i--)printf("%d",a[i]);
return 0;
}
我这个能算到1400左右的阶乘,想算更大的只要把数组a的容量扩大就可以了,但感觉太浪费空间了。可以改成每一个整型变量存一个四位或五位数。
int main(void)
{
int N;
int a[4000];
int i,j,p;
a[0]=1;a[1]=1;
scanf("%d",&N);
for(i=2;i<=N;i++)
{
p=0;
for(j=1;j<=a[0];j++)
{
a[j]*=i;
a[j]+=p;
p=a[j]/10;
a[j]%=10;
}
while(p)
{
a[0]=j;
a[j]=p%10;
j++;
p/=10;
}
}
for(i=a[0];i>=1;i--)printf("%d",a[i]);
return 0;
}
我这个能算到1400左右的阶乘,想算更大的只要把数组a的容量扩大就可以了,但感觉太浪费空间了。可以改成每一个整型变量存一个四位或五位数。