讨论 / WA80分恳求神牛帮忙!!
goon 2011-08-24 03:14:00
点我顶贴 收藏 删除
noip2003PJ 麦森数 问题编号54

这一题我知道是快速幂,但问题是数据2和10一直过不掉,希望神牛能帮我改一下,看有什么错的地方,在此谢过了!!!!!

in2:

3021377

out1:

909526

11913281261611537667213798436049305566736876178255883322723506900154150894025741528852778359314591334030973481399451076356237450255333376076726708226194805056498068234364270236322187114005959098576373866008528267177645658008193588596656071437915287144964841460003215327710769603266764400896690194530668310460272117099806449192863428911515984207543022304118390604844278232572081114474781899183772049596988039233686073203911214513449538158982936063429637539718233655887458210261770225422631973024694271

我的错误答案为

36587794230814928760462282103290764128671647419945

82459139092068449758501692696196852480791751199501

07257509728107308785469256137816857171074554132783

77032371693230279949649808947176602911058349482138

57592809897782094770630516447844808689900617357558

59922979453540790444939496413052336261768771041633

99137466703549578908583659993332852660759452122737

94384619038808446943825089551213821705090962061162

89407205994413242460535459661764117856045535381959

59427342698320095781714685103621144713890461908991

in10:

2976211

out9:

895929

09706254902780580488538638337749488166014345988326027752796117793130264296913904179116439798344610158279684076265265965787901976771930064284522308711662403659439552250198135538452083443036688067014742348499927714966718720802634231050909821692688373949034923784460893758263196576064684482898060471340494758793031585694216573044384886437022298236407514126692346501788965555576712464482545792859950861381768405789873684900520166942689113794869857607317493902398262481988755867710259809742681891351298047

我的错误答案

65226036473004618802672682759216902027641405129330

26541814065029834961376061077186744708712647437940

03173160049850925296705630909192310665003452452887

36888718029437799122954519002720601177494034477396

98637153797130280418895799585712954865090796959110

19647570310884503627832898036634078463575126959375

76263028536999656649910005350815434607245667737971

38430606504995007381030583920567404541014505009769

83996900987257035191119969991980038153340649544424

57484552833759859236254912935669621943591426326527

#include<stdio.h>

main()

{

FILE *fp1,*fp2;

int f[20],a[1000],b[1000],n;

fp1=/*fopen("mason.in","r")*/stdin;

fp2=/*fopen("mason.out","w")*/stdout;

fscanf(fp1,"%d",&n);

int i=0,j,k,l,len;

memset(a,0,sizeof(a));

memset(b,0,sizeof(b));

memset(f,0,sizeof(f));

int w=(int)(n*log10(2)+1);

fprintf(fp2,"%d\n",w);

while(n!=1)

{

if(n%2==0) n=n/2;

else {n--;n/=2;f[i]=1;}

i++;

}

len=1,a[0]=2;

for(j=i-1;j>=0;j--)

{

for(k=0;k<=500;k++)

for(l=0;l<=500;l++)

{

if(f[j]==0) b[k+l]+=a[k]*a[l];

else b[k+l]+=a[k]*a[l]*2;

b[k+l+1]+=b[k+l]/10;

b[k+l]=b[k+l]%10;

}

memcpy(a,b,sizeof(b));

memset(b,0,sizeof(b));

}

int p=449;

a[0]-=1;

for(i=499;i>=0;i--)

fprintf(fp2,"%d",a[i]);

return 0;

fclose(fp1);

fclose(fp2);

}

查看更多回复
提交回复