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
- 47920534108723491154309871821600557622090757323046261065977449476583463130255986
- 36315029959672352476943975462530206788193304372284800209305354155640664838569378
- 14460313869756345920023346260699595551348475414789118083032981642158745292295267
- 89379256477520290526753493566737442931826733745716424654077482679010467787590854
- 08130531447176455869894169668940436489952465247443988349583871206296485413357553
- 81341950049874381336906270397387458660429687159582071576659982660731700562446554
- 17630245013491595672889426197461444969086716558597827292287027237748350973629010
- 19130417812735773037781804081589136005207315806941034305003184349342360269244733
- 06001386111978177447266960892832105254311649603342010203260386367253288964833340
- 58622048436165753620014684054766496664735669795729533948091382637033242209308393
- 66954980688240491622063147911494642042500022450413425558561937442905257252436320
- 05448744152430730521507049102043407657247686509575117412541372953164452176557723
- 53486018215668333525205328300001083440087622668438170232356056451582569541773591
- 97813649975559601912567744942717986360045847405209290089397315276024304951653864
- 43138814787697754147875743261015987970975885562580676619797309847246076948482112
- 79484279765366070550516391044150225544203297212920330093533566872945959123279658
- 86376486894188433640548494009574965791657687213927330153555097865114767947399690
- 62318487837751546261382365166595633720934570820830184048279700572807143292572757
- 74362295870473616416097318172415942042703660664040897402455215307252273886372418
- 59646455223673260411164598464020010216920823315155388821071527191267876531795071
- 90820452510044782129131854405481449415186711420710369389112912501275085346633771
- 77493760165434546963900427111298292550968304206657253642794722000208353138837087
- 81649957189717629338794854271276882652003766325924561614868744897471519366219275
- 66585246211445740701067538042756418444083480520383826505260169858406008478842242
- 18878569278977518104428054744272294551674203356864606099779731249504333214252050
- 53675790499520783597650415379001132579536040655172654879022173595444151139429231
- 64895066317781303905746208244917192131186412963370466140645690017894235673877552
- 31309527859127745332418554424844844936642107313488191806401892223173021566458134
- 73186449997905781662091469870718039388885781280740226363602294114354869871402143
- 57205594773089280865367892020193510260536156792448327674947611785831607186571031
- 08422005602595451151913913091195444478443610327418761023388433916875892334237908
- 59841968266525610628751237572318491474951945985728897934981791761822652480408237
- 12810979077263886428606791708228857585270347083971456161992624784479469279499684
- 59456323827022973641735034307831941156982478200132908512028784748058601889600459
- 01745974055630732714487679085288867978809970695240681006625611440014983413580889
- 73724684406494885707416768791641322420537365406733018639249791091547478595916386
- 55975070905811759248995022147992509456355825143158144640601342834904227983579396
- 59258985200763845646681640732681928346007767285876284900068874564639274964415904
- 03403367233781449159703294178729415506105412951540015939385166392932567742955754
- 94800466582735796539909402335436446493768272725418736275475329768081903253361410
- 86433084237771738995221536763095302045902438694632702895293994483013577589081214
- 88455849381987450592091406720952246909626307694175334098369885936370031497372897
- 79963600186265001749292900879311899978229637123066422979961635825726001122889836
- 47651418045975770042120833949364659647336464289044499325396227091907373705772051
- 32281595786322759191278605429786295318861555980472816071086413280358540016005557
- 56868557917859778991979026565926212830072253514015259735693007290153922111168685
- 04740402172174442051738000251361000494534119324331668344243125963098812396962202
- 35885839558783168519483312665357735324437993568321526917704224903457453485891381
- 25826813669089294768090526355606381196613060639369384118177135459298843172329122
- 36262458868394202889981693561169865429884776513118227662526739978808816010470651
- 54233501567135374481708623431466253119029104015226292710409928507241884332900727
- 77947541116375521765635893163266360493812184018375128188847711689754794837676640
- 84842753623074019542183217985496260666590347925816342392670947839907062923166535
- 03728501975132481380383707089463892547088703908572358100613062864666471000610435
- 21157789266134322146553114118825969429262845221090266884149757633415549211355812
- 54616558078273470115814006008345762133130389987843270653719956709570847385786092
- 64918885837873923916555426357730129224364160406255173689233563656885436585164620
- 78218757417243645258141434876327613417527073767549222762877822647651543153415857
- 13773522730335403376364204258034257264749686217823666951353410677378421131371131
- 98737322289180527506281227771641249441240120712595431999174657474589258261371282
- 55555350804041439445572959945546356084872513394629363589408320989648016195831304
- 29720964794128539388996265368928263807677168759588502216464582430940165009688797
- 36615773356031683671038689522827094150954522274400273549925367021471599405654481
- 38421863801287999008209335763207363694059914242637182940006137419005795130962985
- 45330748197802568301089672873802234820488862973130369689882640657904781562389778
- 48536502569106423179573602533090876327178491118974843224686808634038396417612760
- 57886465744722848249326874430625512205069551684646694771836819114328735448158363
- 50548146411099960143390595799766290646881295025039150923633011076070632863317393
- 37814969338024758003505278978275575092860403942050634293932706463616103182287924
- 81526793068627492372756318522256542660085568494977202859091509304954259674736483
- 31437236349555448901598668408362176913559656039519670425368863482369587129462524
- 75903177681318497758827657674048255813650210364958550570325921995767533426422378
- 37235860585094035839771034766706447886408311096503025652156074640196527169997323
- 73465237173456595514559493098166644006211599349133180135150528651842178828026343
- 32593475585076116869770912558005618568371054085608124951940314806461871940257766
- 32852670196983875675615246967590281068648968692933159543520976875271372016161609
- 31174250199709289684940034696242325688410665113304377412256176258658941236728171
- 14552642389451263171783479027692117145288735295501933675921890800604863373778672
- 81806102547825704367884495035189257874998366947859086129755430841226770609543476
- 12133717433156783790162012337237023338316414706428592185977610158232721997915062
- 87186818675098166553774501302088033390435363977026336380909852649453262814655806
- 55465048234864294953906132574004969128883405182229336444766838550379679758096199
- 83575807027759535968788226194659612223044549275600274955168583542582295336042834
- 42631847806882539545074669187789776540603843251284381281131685620460861728940822
- 96586261744207669202974279300881295198546787135486232366104132165812792671515459
- 61594352593456757445992307889205519540082316409719591250025455237503106735639748
- 83554248044968138303067185193149133578920212360530819995202058450342349993215096
- 26349778124566583046805818245635248146258493319261954068848184464452484294860630
- 16169476663242625231476322371109695369483824482316410396224507675405614287468267
- 83572370489560699065279268845584451204665485337853402664664504233963848825771987
- 49536113004942155937355452119261867214782654168856040949282900566168838076376566
- 90510740892510549165222968878676968631652514917701499900066637344546120262780701
- 92569870622554092894519471877800430613002182828742586704874848082694857344477824
- 40787341027108248702695238308049109604820139012940246312448001593366702126583176
- 77879752965963472576894326540435889267293950687860830626266263287392087327302547
- 91009993211338897780781433672879144876837368646774852877773740354747287164421776
- 78207129645062708809786379281440711925051411480049070556080972292997924414710628
- 52247029870699869227676341773513258602908903875707454368077876422385333700692089
- 61635100923358730398654390607188095255755338036472589500730677212252807817947105
- 64811713785574510576910443229254290241494335883960936793213616969542512997310310
- 32804436954501929843820842383121265825740594509426942777307124802176915781835720
- 08717053877325601798713300550591137782384179164028084140962382084763739301393077
- 84285545452223675598246662506087542848761041456613622276424059143044555808563181
- 80935230407793891614902116292400515074914068443203230365609954878620999194306564
- 45533254713555736531851601170032155069078771675206288152788589714941032098698408
- 30489665243510305024446799317791476591034289491290541203616016956712221408063694
- 05940304552186212879933092856231022418446365289097444640151986623183881962444822
- 59078358591404368619301904145896269387890703498216986869693444808621399053459179
- 28266543047982072196341347556465254831437711566784590777971965107724680002935815
- 46267646310224279007313631352522067062951125935874473134186492497282784796644585
- 44896293290526205806524858870702087938913447608334465317093924240824932800891573
- 13195413483118209277524868805487339433158675626661221793550511906099929113794456
- 34995627391898459029021713155706096267881673302940198464237390445098028030948975
- 98125925205585097353743655682578031368190200715167569382728181882458754171072118
- 08065564480391225045370894226953583821925350756928340956398592655997403913167092
- 90043996275976830375217503360879028295673068862263077729733533853682668734519035
- 70970968732232373830049409012323927431875904652632709517840626726482889364689659
- 32191695211063617297570743761480616013311049116922713186094041450148428664236347
- 16982892418180484365230538864559809839273836490685480823014267803143937440431807
- 82267877949400620648915124895251654300563444837504675175420704331337248687063323
- 75616452323604819320243775968909147833721795536769926032357151855133910984027390
- 63753280702313301755754269396202629423910945323537910125948964941812563672992967
- 08425066759980345627345559855962851228141458255602484178330564524050845006598875
- 59875186013358606249327844877720068422965919455165395629829605916100465789072148
- 42054861830418175604559815168088031783080261445994444677918012432146400983610678
- 68341297487259672925878680622308011582202628901436445900230164582366670926557126
- 45599257906223047452356255751117707915120027893809757754685461210173075227992414
- 07026308137792971909461413145802081087738121624539858769697371425881836152605069
- 38092691771208732191500583197711332279357238507194061276129187257209940493025027
- 77481566140213274347438819664133300526342290829064009279449248085561311834401618
- 04801357032507836323938921567643159620442612809700944107776130638909071294456394
- 05660155924602545420477118614042015523337127050137712103457000957800938926532938
- 57204785765087771496634030035623805957571916093821713122228104658583889435071764
- 31939973012661591423837170284400120399485880996231859472474858776584355077006934
- 09922034037877219272837030138083814439411498497173076616296134205910501481428394
- 97006959516769390415579028563569110555473126845714974496353205546779407751840566
- 67637222969090346128706829887104278761090090999160443821794511763620835379716161
- 83312436443126785543555080050798612466439772413550212823802672671991498972724851
- 29812872836974892764207928686669701772597944078581559093325085541312999465811185
- 27691652464790819119384233275897699573012098103009171001695718791616942270079528
- 91519191252105389183853895931516740050572381740103062100438024301118797770425232
- 80732365751296093724560536800375165961642361477093303912244097528717320679761281
- 20428026739256557305675931512645750047875756531854825821411574030473147492511910
- 83561576573200254610968670189030764853137383291268248174118135903282662508254931
- 32114314789533523170439890539285349466428860742683718249024980924794872266336868
- 23799580875637040808655649321905489637785549531167397935270799470452399153297534
- 35869051410586409653451418289647443936718285271184356079928589597817654395011308
- 88484191635166732136928608309567445028018003737164580091680829727087156091850386
- 54053436660045504985624687376022557041595800250174095361839287643458003670864954
- 05794172008513635712716376832349313423070382127448450144052954169537438194545945
- 65331651409909937227228010196546527262278315121034676861668261314718436100255178
- 63247950150022953695466317739589344131481485834694374523981159954666071205997794
- 36344018507836089910894807341963393925931897394094311004211672912019972262660987
- 19270140241058055153151001098049960441472910394510303126641147267368399733150350
- 36742741546992633165270432940675237449075056739508929674779115800864399992564817
- 20884742925082154627985607912776861194608621034940553585013447219024454382452108
- 92844094981327170106739664711149318967899776615954881861931769001750279017838246
- 24387873831483279500879026433992577026588005849778984624295660321276945810824348
- 12969084097255067105473247131725499719190103955330584704072808169315862609388601
- 91476899441376736214320836073751315743763167546664791867538965715551008506268100
- 05119827486807780592667765654100834778571024250133253391587384761024129794736751
- 00116349897780374593002545760987067109215359711517825201428121664754303407512860
- 02402970384286159842898166021434298490889173596821922844691230359043298772318433
- 09914187264674607558318725713138832356015809009594182530207799397648462597901883
- 34179383092096584146357441198587829647585094305300814834182174782660377376225299
- 77034687529035173107920832200380808092121643465868179898105042743753857867891863
- 50517717501606531826406928883250135919517178537687865881752366421534010961295763
- 07476264807031275736578776235285905715393248457650394439049666808771189919249893
- 38965248523955367958275306141671317579157563866060048399941795487058682092011951
- 54952031294562451315422506574858629161606523796643010172693950282294667489681746
- 82116399679495029428401309923590127825043742819255763453321757616229275111059836
- 82715672297786200537229323140828870587494440601162365216277175585030134514714527
- 65841864277071769968435499620257547431811994883385806759692359580622165832464092
- 09535064835793581774290301831535129001432149551817745690838871932069776969565777
- 17544991499114313689508361606925396064698933748709429332191856012991085644702562
- 57163505508620689240297589684714283678684735455533583477652536156578189996983068
- 65467173644599634313646819542742049047243306467500144269750832236901308389549263
- 70667784065313286648860801295137717208475811577194910123451417749414827735800414
- 32667332379617716965698582785832300505265883502247868050648201444570593197343382
- 92386007260169651090325898090991283765227538149352984509941496693386281556803130
- 69810645251927038185158726486917625632394414252161184277691450677184117357143966
- 81005615483952443154944864238384298900399826113322468963346522104692545137969276
- 00971964533895533210558424564018744861105095911176682894271164005401050377042034
- 60525213182280458929986379035723506651087823500433499423912852363088965109892466
- 41056331584171142885304143772286629832318970869030400301325951476774237516158840
- 91583805915167350451913117819394342848292227230406142258207802782914807042676162
- 93025392283210849177599842005951053121647318184094931398004440728473259026091697
- 30998153853939031280878823902948001579008000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 00000000000000000000000000000000000000000000000000000000000000000000000000000000
- 000000000000000000000000000000000000000000000000000000000000