回文平方數
題目描述
回文數是指從左向右念和從右向左念都一樣的數。如12321就是一個典型的回文數。
給定一個進制B(2<=B<=20,由十進制表示),輸出所有的大于等于1小于等于300(十進制下)且它的平方用B進制表示時是回文數的數。用’A’,’B’……表示10,11等等。
分析:主程式不長,枚舉1~300并判斷,轉B進制的時候存數組裡,最後注意大于10要輸出字母!
代碼
var
a:array[0..10000] of longint;
s:string;
p,i,j,n:longint;
procedure change(x:longint);
begin
p:=0;
while x<>0 do
begin
inc(p);
a[p]:=x mod n;
x:=x div n;
end;
end;
function check:boolean;
var
i,j:longint;
begin
check:=true;
i:=1;j:=p;
while i<=j do
begin
if a[i]<>a[j] then exit(false);
inc(i);dec(j);
end;
end;
begin
readln(n);
for i:=1 to 300 do
begin
change(sqr(i));
if check then
begin
change(i);
for j:=p downto 1 do
if a[j] in [0..9] then write(a[j]) else write(chr(a[j]+55));
change(sqr(i));
write(' ');
for j:=p downto 1 do
if a[j] in [0..9] then write(a[j]) else write(chr(a[j]+55));
writeln;
end;
end;
end.