讨论 / 帮帮忙吧!检查一下错误(回文数)(我把刚得到的可用积分全花上了)
www5413068 2011-09-11 18:39:00
点我顶贴 收藏 删除
亲爱的哥哥姐姐们:

能帮帮我看一下为什么有一个测试点没过呢???

不胜感激涕零!!!

(我把刚得到的可用积分全花上了)

var i,j,k,m,n,ans,le:longint; s:string;

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

procedure zhuan;

var i,j,k:integer;

begin

for i:=1 to le do

a[le-i+1]:=ord(s[i])-ord('0');

end;

function check:boolean;

var i,j,k:integer;

begin

check:=true;

for i:=1 to (le div 2) do

if a[i]<>a[le-i+1] then begin check:=false; exit; end;

end;

procedure main;

var i,j,k:longint;

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

begin

fillchar(b,sizeof(b),0);

for i:=1 to le do

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

for i:=1 to le do

begin

a[i]:=a[i]+b[i];

a[i+1]:=a[i] div n+a[i+1];

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

end;

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

end;

begin

readln(n);

readln(s);

fillchar(a,sizeof(a),0);

le:=length(s);

zhuan;

if check then begin writeln('0');halt; end

else

begin ans:=0;

while not check do

begin

main;

inc(ans);

if ans=30 then begin writeln('Impossible');halt;end;

end;

end;

writeln(ans);

end.

#1 Conon@2011-08-23 18:54:00
回复 删除
你第二个点没过吧

第二个点是16进制

会出现ABCDEF代表10 11 12 13 14 15

你的procedure zhuan 需要改动

#2 VincentZ@2011-09-11 18:39:00
回复 删除
回复 沙发Conon 的帖子

多谢沙发~~

路人留

#3 VincentZ@2011-09-11 18:39:00
回复 删除
回复 沙发Conon 的帖子

多谢沙发~~

路人留

查看更多回复
提交回复