zoukankan      html  css  js  c++  java
  • C语言 大数的阶乘

    求400的阶乘

    C/C++ code
    #define N 400 long a[8916]={1,0},n,i,c,len; int main(void) { n=N; for ( len=1;n>1; n--) { for (c=0,i=0; i<len;i++ ) { a[i]= ( c+= a[i]*n ) % 10000; c/=10000; } ((a[i]=c)>0)?len++:0; } for( len--,printf("%d",a[len--]);len>=0; len--) printf("%04d",a[len]); return 0; }

    【解释】

     for ( len=1;n>1; n--)     //把len的长度初始为1,因为数组中已经有一个元素了a[0]=1
     {
       for (c=0,i=0; i<len;i++ ) //c初始为0,一开始还没运算哪来的进位,这是个内层循环,数组a中的len
                              //个元素都必须参与运算,都必须*n,这就是下面a[i]*n的来由

         {
               a[i]= ( c+= a[i]*n ) % 10; c/=10;   //c是进位,不用说了,c+=a[i]*n,a每个元素与n
                                                    //相乘必须考虑低位是否有进位,有就加起来
         }

       ((a[i]=c)>0)?len++:0;  //最后一个元素也有进位吗,有的话就在当前的元素的下个数组位置直接等于进位值,并
                              // 且数组的元素值 要加1,没有的话什么都不干 ,光一个0什么都不是
                       
      }


     

  • 相关阅读:
    判断是否为数字
    viewPage
    向左对齐的Gallery
    QQ登入(6)腾讯微博-获取微博用户信息,发送微博
    QQ登入(5)获取空间相册,新建相册,上传图片到空间相册
    QQ登入(4)QQ分享-内容转载
    QQ登入(3)QQ空间分享-无需登入
    Codeforces Round #210
    zoj 3716
    Codeforces Round #209 (Div. 2)
  • 原文地址:https://www.cnblogs.com/xianghang123/p/2152430.html
Copyright © 2011-2022 走看看