阶乘计算升级版

来源:互联网 发布:知乎 段子 编辑:程序博客网 时间:2024/05/22 20:00

这题数字到后面很大,不能用普通的方法。用数组进行大整数的乘法。手工算法。


int mutiply(int N);void Print_Factorial(int N){  double sum=1;  int s;  if(N<0)  {    printf("Invalid input\n");    return;  }  if(N==0)  {    printf("1\n");    return;  }  if(N>0)  {    mutiply(N);    return;      }}int mutiply(int N){  int s;  int a[3000]={0};  a[0]=1;  int c;//进位用  for(int i=2;i<=N;i++)  {    c=0;    for(int j=0;j<3000;j++)    {      s=i*a[j]+c;      a[j]=s%10;      c=s/10;    }  }  int k;  for(int i=2999;i>=0;i--)  {    if(a[i])    {      k=i;      break;    }  }  for(int i=k;i>=0;i--)    printf("%d",a[i]);}