大数相乘之求N!

来源:互联网 发布:软件小品官网 编辑:程序博客网 时间:2024/05/21 19:34
#include<stdio.h>  #include<math.h>  #include<string.h>  #include<stdlib.h>  #include<ctype.h>  #define MAXN 10000+5  int main()  {      int f[MAXN],c=0,n,i,len;            while(scanf("%d",&n)!=EOF)      {      memset(f,0,sizeof(f));       f[0]=1;      len=0;      for(int i=2;i<=n;i++)   //阶乘乘的数       {          c=0;    //进位           for(int j=0;j<=len;j++)  //被乘数的每一位都要乘乘数       {          f[j]=f[j]*i+c;          c=f[j]/10000;          f[j]%=10000;      }      if(c!=0)      f[++len]=c;   //这里是前置运算符,若写成len++结果会出错       }      printf("%d",f[len]);   //把最高位没有凑够四位的输出,防止有前导0       for(i=len-1;i>=0;i--)      printf("%04d",f[i]);       //四位四位输出,不够的位数补0       printf("\n");                 }            return 0;  }  

0 0
原创粉丝点击