6-10 阶乘计算升级版 (20分)
程序员文章站
2022-03-13 13:47:34
...
由于N很大了过后,就超过了int的范围了,故我们只能用数组模拟乘法
AC代码
void Print_Factorial ( const int N ){
if(N<0){
printf("Invalid input");
return;
}
int num[1000000] = {0};
int i,j,k=0,temp,y=0;//y是余数,k代表目前的长度
num[0]=1; //阶乘的最后一位是1
for(i=2;i<=N;i++){
for(j=0;j<=k;j++){
temp = num[j]*i+y;
num[j] = temp%10;
y = temp/10;
}
while(y){ //如果有进位的情况
num[++k] = y%10;
y = y/10;
}
}
for(i=k;i>=0;i--){
printf("%d",num[i]);
}
}
上一篇: 数据结构-散列表-图