讨论 / 大牛帮忙看看,为什么错一个点呢
lfwdj1992 2008-06-30 09:42:00
点我顶贴 收藏 删除
var

a:array[1..300]of integer;

b:array[1..300]of integer;

m:integer;

i,j:integer;

p,c:integer;

st:string;

function check:boolean;

var

i:integer;

begin

check:=false;

for i:=1 to p div 2 do

if a[i]<>a[p+1-i] then exit;

check:=true;

end;

procedure solve;

var

i:integer;

begin

for i:=1 to p do

b[p+1-i]:=a[i];

for i:=1 to p do

begin

inc(a[i],b[i]);

inc(a[i+1],a[i] div m);

a[i]:=a[i] mod m;

end;

if a[p+1]<>0 then inc(p);

end;

begin

readln(m);

readln(st);

p:=length(st);

for i:=1 to p do

case st[i] of

a..f: a[p+1-i]:=ord(st[i])+10-ord(a);

0..9: a[p+1-i]:=ord(st[i])-48;

end;

if check then

begin

write(0);

halt;

end;

while c<=30 do

begin

solve;

inc(c);

if check then

begin

write(c);

halt;

end;

end;

write(Impossible);

end.

#1 wxfred@2008-06-29 06:59:00
回复 删除
好像没考虑16进制的情况
#2 goleenuoer@2008-06-30 09:42:00
回复 删除
代码太丑陋了~~~~
查看更多回复
提交回复