欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

6-10 阶乘计算升级版 (20分)

程序员文章站 2022-03-13 13:47:34
...

6-10 阶乘计算升级版 (20分)
由于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]);
  }
}
相关标签: PTA练习题