• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > c++大数阶乘的实现方法

c++大数阶乘的实现方法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++大数运算,c++大数加法,大数阶乘,c语言大数阶乘,大数阶乘算法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

C++代码如下:

 #include <algorithm>
#include <vector>
#include <cstdio>
using namespace std;
typedef  unsigned int Type;
enum{ BASE_DATA = 10000, MAX_NUM = 100000 , 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() ) );
transform( Temp.begin() ,Temp.end() , Temp.begin() , ConverData() );
Temp.push_back(0);
printf("%s/n",&Temp[0]);
return 0;
}

10000阶乘只要5秒:

82899872979704859021775060092893328957272392019589994471945147360850770400725717
43931814846190940626954528503052634100056502222615230936488288712204645426770057
71489943351471625042523651737102660686472534581201866832739536825474565365535975
46685788700056988360286686450740256993087483441094086086303707908295240576731684
94185581048247530475892339280157130282410623499994593239052140985655956566134600
33961505151647588527422147325179995489779928495227460298556667008118712008561550
16457400484170210303038996339253337466556817824410737409336919294104632307731994
75982630738349960077037241044628541464870411627389564983455516216568511455138382
20470054839966717062464675661012913820489091211172293862442531589130669874620455
87244806052829378148302622164542280421757760762365459828223070815503469404938317
75505330509469899947611941923128072180721696437843331360676067696518713839433877
24854936890618457005720436966664650807344958144959663062466986798328725863000642
15220210171813917325275173672262621454945468506006334692713838311715849753092643
25248696022005909980266376538622546326516841496330636954808655110125675771789061
66947583440434862184853695916021720304561834975241620399264413316518847686068306
42004858557924473340290142588876403712518642229016333691585063273727199596362912
78334478621888787100953375355105468898023637826371492691328956433944089947012145
21345721177156575914517348951950168006213539271754198438761635434798069208866662
27099512371706241924914282576453125769939735341673046864585181979668232015693792
68492699998399241357194149688227370402282080517180800340048061526179201397894518
62952905584407037383005335524211539033851858293667791906101163062336731444192028
93857201855569596330833615450290424822309297087124788002017383072060482680156675
39759378993179351579995892956215630733841629459990027673083282771659506421796652
31904392505432267537318117553154767807394703389311851072977243183789726749574557
78183345495942317353558291046967315391275975687281861691161083156337232639968881
49054394326119718227499679117662855340186019831580962998179110720880499229201606
20590672712735994618716349457749958053379471871054564525793960242102591364155283
98395201773012712514892051061708228008339985665786646920737114269682301770416324
82947940955869469908937916519100630518535210234518979812761914306186436270308197
71249927510567329094812020577471006877033797089342292071839037441675034938188363
42229284946790660285674293251642569044363473087656797056595677285291081242733154
40658019980271157912625417279745286257486592193329380591523952473551888711986039
13196542875762901905039640835602462775343144091556421817294599415960619796226332
42715863425977947348682074802021538734729707999753332987785531053820162169791880
38075300633435076614773713593936265190522224252814108474704529568864775791350216
09220403484491499507787431071896557254926512826934895157950754861723413946103651
76616750329948642244039659511882264981315925080185126386635308622223491094629059
31782940819564048470245653830543205650692442267186325530764076187208678039171135
63635012695250912910204960428232326289965027589510528443681774157309418748944280
65427561430975828127698124936993313028946670560414084308942231140912722238148470
36434101963041363073677106003815959082974641011442135832104257435835022073717321
97450890355731873504458272387707282714061629979196293572241044771550516525358675
44109395079218369015261138440382680054150924346511711436477899444553993653667727
58956571398750554299082458560951003693466310067371470802992765693343550092718985
40501099174749799915543920319089619676154446860481754006956894714639282453838070
10444181045506171305160584355817521032338465829201071030061124283407458607006060
19483055136486702102036470847080742270437189370696568879561792871304522451684202
74020219664156052803350612935587390793935244040925842483806071774446099640352218
91022961909032569042381374492494906892314330884224399631396391545854065286326468
80758114874837140828417645522638631352026489401626249480238856823159910295262033
71264492799019382111345184463875445163912393779741905766499117642376377222828023
18465738050121277809680315691477264910257503508758792248110223544524410872448565
70075518713214659209354850455282917074959677540445077949483637175606232692575741
28131102419103733380804343253108846948315557294022653949729138175813386194570577
99561808755951413644907613109617155928376585840036489374076822257523935988731081
68966768828740383719282769043151410699767830381908569071309193134084601951114748
27663507246765349220400586266776329355166319396224989799127080044659822648991252
26813124300528104995058595676527123591494442612554437618645029202881358582871789
57722411638081516183160312972879698748013982862164562919615309635833731361972477
33323530254665711969026112373806290302429042757945490300226608474465131617416919
16851746464945459696005330885252792083472495235473110674109099223541055506299687
64215395124935598631134666172511689078563332893556915044948518911348830187636510
06385025659164330219285655962639143828950683248387271656165601115315170552229557
65944972454788815532316417453267167978861141165355597588331979638070962998880767
30361694031773644814042786778425123244997469342134821717959519069820460299717200
11748573038897192055974147424530111358697662566077709702256332617011084637847955
55258504578058879440756064974127974530918418405207558526462208821483646754652237
60921078753919045468485234975998604494332282807312067992240247750751410589077462
73343190912554513522253292759138420473846030561631542365529353122783897594465157
87337343463172280001031380425481404022090580405056003860937403435068863081434683
84890070893856505002756905967806940469843518453513414103161513368304371478664292
53897171659786290107284007589397003883177426481637251132773699268277094653425835
96111881955092462062153978121197244762623771534452048069819082524943963962251113
83117742897853582559083249048049751604710425756975344255151577981560037084723060
34847539775136883904043160174862488713393118185230294254256762024856883939708367
48788453789172574145155917919035398535077200900594979352939459631213445503368260
69005982871772353337522194191554730374206234326289296839701505889219111204924986
47

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++快速幂与大数取模算法示例
  • C++实现大数乘法算法代码
  • C++大数模板(推荐)
  • 深入分析C++中两个大数相乘结果不正确的问题
  • c++大数阶乘的实现方法

相关文章

  • 2017-05-28C语言打印杨辉三角示例汇总
  • 2017-05-28C++中用栈来判断括号字符串匹配问题的实现方法
  • 2017-05-28C语言通过深度优先搜索来解电梯问题和N皇后问题的示例
  • 2017-05-28sizeof()的简单介绍
  • 2017-05-28C语言 解压华为固件的实例代码
  • 2017-05-287种排序算法的实现示例
  • 2017-05-28C 语言基础教程(我的C之旅开始了)[二]
  • 2017-05-28C语言实现BMP转换JPG的方法
  • 2017-05-28C语言 结构体和指针详解及简单示例
  • 2017-05-28C++版本简易Flappy bird

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++中引用的使用总结
    • 使用单链表实现多项式计算示例
    • 深入理解C语言的逻辑控制
    • 使用Inotify 监控目录与文件的方法详解
    • 用c++实现x的y次幂的代码
    • C++实现将简单密码译回原文的方法
    • C++插入排序算法实例
    • C++模板之特化与偏特化详解
    • 素数筛选法
    • VC打印word,excel文本文件的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有