NYOJ-28 大数阶乘

    xiaoxiao2021-04-16  37

    时间限制: 3000 ms  |  内存限制: 65535 KB 难度: 3 描述 我们都知道如何计算一个数的阶乘,可是,如果这个数很大呢,我们该如何去计算它并输出它? 输入 输入一个整数m(0<m<=5000) 输出 输出m的阶乘,并在输出结束之后输入一个换行符 样例输入 50 样例输出 30414093201713378043612608166064768844377641568960512000000000000 //判断一个数的阶乘有几位数的方法是n=lg10(x!) #include <stdio.h> //#include <time.h> #define M 20000 int result[M]; int main() {     result[0]=1;     int n,i,j,num=1,carry,r;     scanf("%d",&n);    // clock_t start,end; //时间函数    // start=clock();     for(i=2;i<=n;i++)     {         carry=0;         for(j=0;j<num;j++)         {             r=result[j]*i+carry;             result[j]=r;             carry=r/10;             if(j==num-1&&carry>0)                 num++;         }             }     for(i=num-1;i>=0;i--)         printf("%d",result[i]);     printf("\n");  //   end=clock();   //  printf("%lf\n",double(end-start)/1000.0);     return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-672691.html

    最新回复(0)