加法與次方的奧妙
重要!!看下面
若不想用作弊的方式,就必須善用大數,這個數高達3000位,光是跑進位可能就會TLE,
所以請用10萬進位法,來減少次數!
題目:
11+22+33+.....+1010=10405071317
來求:11+22+33+.....+10001000=?
輸入說明:
輸出說明:
直接輸出答案(11+22+33+.....+10001000=?)
答案:
10003681991446951770953750112276467955677936806229346545837609881002349107477161
94381428659099527845945869942643191290894720342979906407679647259860434238468038
32604080969103761537037623771364851006311573295146177424670558426686575960181584
36664428322845568803131145481515391909753984854966455765134658585827123364011662
21956188173449531674102688908321764663020306699770408625340766091595022791379368
09836930637560281385664635877375155877521346022579657984658333400734935862434233
93329813345712378888092831033487602613601759508156091794640268710052436521099808
63552142014242903434068560936573231079342194031864413918101238151056509267393515
76039284247250139159407346300152184381107376702171102630750469573346789782186690
66484698283466074129673958017977916836098347224322419528453525646818682403695695
66192825555323558078061997527689983848863374786789331581565252059172614339424600
98614325923316758337107036262555453185205416611714885822950858158961433759446327
75543805183809213012188363271022314073322011097401025802164692983317669206196460
83790732807627360614428085171565006289728508688964226799647192582924058589530750
67457838536556187855958968575622569234891474692281091391561983475411764835803581
41286702941585656699420877362863909422415472260150044713306301130720427042889050
42142628193771918594574302202147201188486345913190833752307476966010547423928871
06311878302603638131903905200825207205793366671291894623331279369709407422418787
20459709764443092427821877383202574900808243300749916986982395611258111276078639
00355221737846690567707344074494145266662103839812840216303448476913957072355732
71662709837224522304679291974725911315742582406485833141540094327821304295463505
35740452099845122212642419035501784168245514125486375900077790825392882477516535
66899882749594405895102587985539527709493510049546445427265617478399107188238681
77121590423411939224748975107908594805594509880561796372292846955426378221762516
04280082288455525403444948601952671151870922277661957539072111266461501406147442
33974765273475619964311852858614167819668340124730487710162006793529985758820653
67727437956331349545452663271872348233949482575982107640169431604345651211793793
54564635214630211977266949835589291323575761885949775166307342128638694561642055
25536767311298137182511494649463663073759219213056823561667776093739425742883930
71260996216346408803882656913203216069263720618308594298797368458427649178484311
54720779004016925956941192735535110259912654460393662889217435813332000837171052
41171504606883543418862024047552177055263424469501298905901938158245938633694105
02481516667981368915666834119771347509438990488712679446890189385047505001120522
57424555556257505602132303879103379839503332450206532389891155070138829562777638
80795687210857196493893142656713105966275422144605988058939600603604226921401402
09651929425048867029798339635327946045314237554226788198919748178978067895509376
31936586036908984748269769065444739780174557203679299817960230417858526267972712
83465789498383642350667978127819110846700
/*****************作弊!!*********************************/
#include<stdio.h>
#include<stdlib.h>
main()
{
char x[3003]="請貼上面給的答案";
for(a=0;a<=3000;a++)
printf("%d",x[a]-48);
return 0;
}
/***************正統*************************************/
#include<stdio.h>
#include<stdlib.h>
#define N 605
main()
{
int ans[700]={0};
int a,b,c,d;
for(a=1;a<=1000;a++)
{
int temp[700]={0};temp[0]=1;
for(b=1;b<=a;b++)
{
for(c=0;c<N;c++)
temp[c]=temp[c]*a;
for(c=0;c<N;c++)
if(temp[c]>=0)
{temp[c+1]=temp[c+1]+temp[c]/100000;temp[c]=temp[c]%100000;}
}
for(b=0;b<N;b++)
ans[b]+=temp[b];
}
for(c=0;c<N;c++)
if(ans[c]>=0)
{ans[c+1]=ans[c+1]+ans[c]/100000;ans[c]=ans[c]%100000;}
for(a=N-1;a>=0;a--)
if(ans[a]!=0)
{
printf("%d",ans[a]);
for(b=a-1;b>=0;b--)
printf("%05d",ans[b]);
break;
}
return 0;
}