hdu1042大数阶乘

来源:互联网 发布:云计算研发工程师 华为 编辑:程序博客网 时间:2024/06/07 09:26
#include <cstdio>#include <string.h>using namespace std;const int maxn=50000;int f[maxn];int main(){   int i,j,n;   while(scanf("%d",&n)!= EOF)   {memset(f,0,sizeof(f));   f[0]=1;            //先让个位为1   for(i=2;i<=n;i++)             //从2一直乘到n   {         int c=0;                             //c保留进位数         for(j=0;j<maxn;j++)         //遍历f数组         {                 int s=f[j]*i+c;              //计算每一位的值                 f[j]=s%10;                    //每次乘后更新数组的值                 c=s/10;                          //c保留进位数         }    }    for(j=maxn-1;j>=0;j--)             //忽略前导0    if(f[j])        break;     for(i=j;i>=0;i--)                          //输出          printf("%d",f[i]);     printf("\n");     }   return 0;}

数组开50000,感觉自己真正融入在题目中的时候才能做出来

原创粉丝点击