讨论 / 为什么只得60分
李一恒 2008-12-12 22:28:00
点我顶贴 收藏 删除
var

m:ansistring;

a,b:array[0..1000] of integer;

k:boolean;

n,i,t,j,d:integer;

begin

readln(n);

readln(m);

a[0]:=length(m);

for i:=1 to a[0] do

case m[i] of

’A’:a[i]:=10;

’B’:a[i]:=11;

’C’:a[i]:=12;

’D’:a[i]:=13;

’E’:a[i]:=14;

’F’:a[i]:=15;

’0’,’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’:a[i]:=ord(m[i])-ord(’0’);

end;

t:=0;

repeat

k:=true;

for i:=1 to a[0] do if a[i]<>a[a[0]-i+1] then begin k:=false end;

if k=false then begin

for i:=1 to a[0] do begin

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

end;

for j:=1 to a[0] do a[j]:=a[j]+b[j];

if a[1]>=n then begin

for j:=a[0] downto 1 do

a[j+1]:=a[j];

a[1]:=a[2] div n;

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

a[0]:=a[0]+1;

end;

for d:=1 to a[0] do

if a[d]>=n then begin

a[d-1]:=a[d-1]+a[d] div n;

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

end;

t:=t+1;

end;

until (k=true) or (t>30);

if t>30 then writeln(’Impossible’) else writeln(t);

end.

查看更多回复
提交回复