论文网
English Papers
万事OK网
发表论文
 
 首页 > IT文章 > 程序设计 >
大数阶乘源码

[科技论文网] http://www.scipapers.com    2007-12-01  

    大数阶乘源码

    别人要的时候写的,感觉速度还是蛮快的
    #include <algorithm>
    #include <vector>
    #include <stdio.h>
    using namespace std;
    typedef  unsigned int Type;
    enum{ BASE_DATA = 10000, MAX_NUM = 4000 , MAX_SIZE = MAX_NUM+1000};
    struct MulOpt {
        Type data1;
        MulOpt(Type x):data1(x){}
        inline Type operator()(Type y)
        {
            return data1*y;
        }
    };
    struct ConverData
    {
        inline Type operator()(Type x)
        {
            int y = (x/1000);
            x %= 1000;
            y += ( x/ 100)<<8;
            x %= 100;
            y += ( x / 10)<<16;
            y += (x % 10)<<24;
            return y + 0x30303030 ;
        }
    };
    struct NoEquZero
    {
        inline bool operator()( char x)
        {
            return ( 0 != x )?true:false;
        }
    };
    int main(int argc, char* argv[])
    {
        vector<Type> Temp(MAX_SIZE);
        Temp[0] = 1;
        size_t nCurrendLen = 5;
        for(int i = 2 ; i < MAX_NUM +1 ; ++ i){
            transform( Temp.begin() ,Temp.begin() + nCurrendLen + 4  , Temp.begin()  , MulOpt(i) );
            nCurrendLen+= 1;
            Type *p = &Temp[0];
            for(size_t  x = 0 ; x < nCurrendLen ; ++x ){
                //处理进位
                int temp = (*p)/BASE_DATA ;
                (*p) %= BASE_DATA;
                p++;
                *p += temp;
            }
        }
        reverse(Temp.begin() ,Temp.end() );//反转
        Temp.erase( Temp.begin()  , find_if( Temp.begin() ,Temp.end()  , NoEquZero() ) );//移除结果开头的0
        transform( Temp.begin() ,Temp.end() , Temp.begin() , ConverData() );//转化成字符串
        Temp.push_back(0);
        printf("%s\n",&Temp[0]);
        return 0;
    }

        来源:

声明:本文由网友推荐或作者提交,版权归原作者所有,刊登此文仅为传播知识,展示研究成果,提高文章引用率。未经原作者授权,禁止用于任何形式的商业行为。科技论文网倡导尊重知识、尊重劳动、保护原创、知识共享。由于部分论文文章来于网络,文章作者不祥,请相关的原创作者与我们联系,以便加上您的署名。

  
大数阶乘源码
下面没有链接了     随机算法研究
最新论文
·[程序设计]大数阶乘源码
·[程序设计]随机算法研究
·[程序设计]拷贝链表的O(n)算法
·[程序设计]Prim算法完整实现代码
·[程序设计]矩阵旋转算法的实现
·[程序设计]格雷码算法C源码
·[程序设计]凸壳串行算法
·[程序设计]常用算法设计方法:贪婪法
·[程序设计]递归实现数组元素相乘
·[程序设计]地图着色算法C语言实现
 
 

搜索论文

Google
论文分类

论文网 论文发表网 论文 免费论文网 找论文网 毕业论文 中国论文网 英语论文 百度论文 聘教网 易搜
 免费发布论文    中国论文网 2008版权所有  业务联系:pinjiao@126.com