1039:计算1977!

1039:计算1977!


Description


编写一个程序。计算1977!的值。


HINT

1977!的值超过计算机所能表示的整数范围,请考虑其他技巧,假设 1977!之值不超过10000位用一个含有10000个元素的整型数组num表示其结果,每个元素存放一位,num[0]存入个位数,num[]存入十 位数,依次类推……8!=40320,当前最高位len=4,求9!与各位依次相乘rum保存当前的进位数字。(0<=rem<9).

1)rem置初始值0.

2)i=0:rem=rem+num[0]*9=0+0=0。num[0]=rem%10=0,rem=rem/10=0。

3)i=1:rem=rem+num[1]*9=0+18=18。num[1]=rem%10=8,rem=rem/10=1。

4)i=2:rem=rem+num[2]*9=1+27=28。num[2]=rem%10=8,rem=rem/10=2。

5)i=3:rem=rem+num[3]*9=2+0=2。num[3]=rem%10=2,rem=rem/10=0。

6)i=4:rem=rem+num[4]*9=0+36=36。num[4]=rem%10=6,rem=rem/10=3。

7)rem=3,说明有进位,数组最高位增加1,len=len+1=5,num[5]=rem%10=3,rem=rem/10=0,结束。

num各位结果为:3、6、2、8、8、0。即9!=362880


#include<iostream>
using namespace std;
int main()
{
   int a;
   cin>>a;
    cout<<"44885501861451087214610857079909248837424492260428166724654147729643971700105425720084828218702600864349140553199425461195269756193449196420567670679997930497776962868627670814088525137310931384053497107655953166587777978189922585102015543252313842383879336452450405459365865930993882304967506579365573169114407061415044954204598042872984994370362994974190731648365853764021641267208890952183486957937797501412079339876017057593846219506921136683729082140979815738837181904628215025970879798689459975470705399719623801943630265034717650140070948581455541860388599570712955903767340302796772249678308667271334347735171920753722738382693169959755895777926922251934138946424062651593626615221554668142680371533735545526245936393642639820076708459169410776182481701982480050935429118156542429067920764915432851090578762675010478117563049656075543746119739717069866844883357409792569209134960636899425405149847065831281602082518075830646453654516317941696388277090166892581177070312338391653451955318906268079481790194265751853219151144318930316453953750991148493823206443369425944001941242917619527312311207417490693701494050808890878867975845117860433305316607551476965975790906896956127068298433273240281529950530069641805218400403258304360527381746385960815854239125565833311599210531902596579244149649008262885625747559728294814901871961517895638622905618910600921127432523435482034431607171597093293499891539807469664419507507385877763852240766577618864272175955102012797157374020057234790470573845442607086246849758817092472168600233686805040307801018904746900136895007446767892015103691546758917875283121559678424003351902375286355906676294721988128226509353084890739795591400978292429823019720587768866778565392965756177032714260472652522638182042178310497913363256666800211643586936480222169051736890119033575641362239097097668967707166546262165398342392082223840669956935518432433500512388128400501454567656003140699526312023215530969441249645000266981731474774311788566684103080652651130203579577659975621990943301760656291769606581621697893381784095276308563096667204798424584607702111698065254798376863076775838978795969975490569630809412346134850519967391026203435895655178226018567556450547196780276455924702875584894370421382586806714454592324162291540557289594093207488369616272458093646865153652591651977875393766158034846660994538470440002956734058798262392142018920993818689377588368163212024980190732396123717654885345318311881246452386979748492361608880215366959550154169889976098868177465811974997151687956412035252091325327239663869718509994035950918164411361389182525735435503547508839069279412344659861985920520906072587123123331095210491314236109240894403174951136822689796682524419281202547410727207049300182313660882768899486299620250523429591273583672949060001392324716645374632799121425207847994631057230794080496305639953304416917362257038854013896602584668330878544023543613061625753736164860737224928877680952653955796563792519162354541809473826165637051852050551375789673906991015231770191344532237230197212247808977750167304211358001556586938445903710297655467254175868400223251027316617594966819372453229090075416331169907476721079357279340658265132544616671356523759070808402554409562998869466175554581595720186681291377238031229963602424692724581562963871555299756846210719567248993090291643090340865372994247770175629123166395093036590992401428163026242637631276118954137752850608058698188636249011898545242604954174231816312797226812573427520943156653441116944356313617111649439782483116345998865356371264021702934385830524607545916082681723336300525740351901199785928918756667131759364856921713383210912328024559654704854102702259188968835912529499829982173477142559122574238026368742589720302024351936092912062935207156160753422673950733411087659019615053695175512684860561708230621159432059777334251461120470573475673358987108714856295142438953966517877419012271749890653388333329644505840068967629673118338646511218029658964431806630859185514092919508645264791768635043717176995406906564969624139415056784502969192669845401546983119762050259532817708831129549658092293235478320212147238061012342575368912996276889850467927800530591024505261738190292620196591471057917771997314616468851435648447291509773768541016965006318582734773265425619413143971696759006852267259561850525423115448245064957917308932248736590889553216053395073528665556848023503474296872182653139085069088572995129970277847947107821860675145364682650925420911412190721877818056372224222386334296773926506377426553303395543283286979254479006385723721651473737581750366456411044778457816144171346913394986370709474086023995999519809157066651288416873822563589323100234110838358055086897561674267091601132114100558679834327264396337664219084247730733599995905528037136968919519302002171318340744996774790395419281259057908266922735066452279956814516691434241768267941233868352917686780465248273578999914786724525402231196812975707174605005153159430528247125884412573041717023369550991289730066133225519782887483548537172695747744050948960901844040458316467701938297164400940155373802267886187842636408654937504031184246746956396377352375369130175324314589462528000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"<<endl;
    return 0;
}


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值