• 大数处理问题


    1.求N的阶乘(10000以内的整数)数组实现

    MOD数的设定与N的范围有关N最大为10^4 ,所以MOD设定10^5,相乘最大不超过九位

    0!=0             printf("%05d ",g[i]);

    //计算 N!  30
    #include<iostream>
    #include<cstring>
    using namespace std;
    const int maxn=20000;
    int n,c,k,i,j;
    int f[maxn+1];
    int main() 
    {
        while(cin>>n){
    if(n==0){
        cout<<0<<endl;
        continue;
    }
            memset(f,0,sizeof(f));
            f[0]=1;
            for(i=1;i<=n;i++){
                c=0;//表示进位
            for(j=0;j<=maxn;j++){
                f[j]=f[j]*i+c;
                c=f[j]/100000;
                f[j]=f[j]%100000;
    
            } 
            }
    
            for(k=maxn;k>=0;k--)
                if(f[k]!=0) break;
                cout<<f[k];
                for(j=k-1;j>=0;j--)
                printf("%05d",f[j]);//5位的数字不足前面添0 
                cout<<endl;
            }
    }
    View Code

    1000的阶乘结果:

    402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404800479988610197196058631666872994808558901323829669944590997424504087073759918823627727188
    73251977950595099527612087497546249704360141827809464649629105639388743788648733711918104582578364784997701247663288983595573543251318532395846307555740911426241747434934755342864657661166
    779739666882029120737914385371958824980812686783837455973174613608537953452422158659320192809087829730843139284440328123155861103697680135730421616874760967587134831202547858932076716913244
    842623613141250878020800026168315102734182797770478463586817016436502415369139828126481021309276124489635992870511496497541990934222156683257208082133318611681155361583654698404670897560290
    095053761647584772842188967964624494516076535340819890138544248798495995331910172335555660213945039973628075013783761530712776192684903435262520001588853514733161170210396817592151090778801
    939317811419454525722386554146106289218796022383897147608850627686296714667469756291123408243920816015378088989396451826324367161676217916890977991190375403127462228998800519544441428201218
    736174599264295658174662830295557029902432415318161721046583203678690611726015878352075151628422554026517048330422614397428693306169089796848259012545832716822645806652676995865268227280707
    578139185817888965220816434834482599326604336766017699961283186078838615027946595513115655203609398818061213855860030143569452722420634463179746059468257310379008402443243846565724501440282
    188525247093519062092902313649327349756551395872055965422874977401141334696271542284586237738753823048386568897646192738381490014076731044664025989949022222176590433990188601856652648506179
    970235619389701786004081188972991831102117122984590164192106888438712185564612496079872290851929681937238864261483965738229112312502418664935314397013742853192664987533721894069428143411852
    015801412334482801505139969429015348307764456909907315243327828826986460278986432113908350621709500259738986355427719674282224875758676575234422020757363056949882508796892816275384886339690
    995982628095612145099487170124451646126037902930912088908694202851064018215439945715680594187274899809425474217358240106367740459574178516082923013535808184009699637252423056085590370062427
    12434169090041536901059339838357779394109700277534720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    View Code

     2.

  • 相关阅读:
    size_t类型
    sudo 安装 ——Debian 6
    Ubuntu10.10 上海交大及其他教育网更新源
    Linux 命令解决小问题
    VMware Player tools for linux 安装
    内核总结之内存管理api (转)
    volatile的使用
    二叉树层次遍历队列实现
    Ubuntu 11.04 下OpenCV安装
    Ubuntu 添加教育网更新源【转】
  • 原文地址:https://www.cnblogs.com/helloworld2019/p/10549191.html
Copyright © 2020-2023  润新知