题目:<br/>
求1到5000的阶乘
个人理解:<br/>
求大数的阶乘肯定要用到数组,数组每一位存一位。
#include<stdio.h>
#include<math.h>
int f[20000];
int jc(int n)
{
int i,j,t;
for(j=0;f[j]>=0;j++){//此循环用来将上一阶乘的个位乘以n
f[j]=f[j]*n;
}
i=0;
while(f[i]>=0){
if(f[i]>=10){
if (f[i+1]<0){
f[i+1]=0;
}
f[i+1]=f[i+1]+f[i]/10;//如果该位有进位,传到下一位
f[i]=f[i]%10;//使每一个数组单元只保留一位数
}
i++;
}
return 0;
}
int main()
{
int n,i,z;
for(z=0;z<=20000;z++){//将数组全部置为-1
f[z]=-1;
}
f[0]=1;
scanf("%d",&n);
for (i=2;i<=n;i++){
jc(i);
}
for(i=20000;i>=0;i--)
if(f[i]>=0)
{
printf("%d",f[i]);
}
printf("\n");
}