题目 主要就是进制的转换,把这块写清就行了。 代码: { ID:asdcyt01 PROB:palsquare LANG:PASCAL } program palsquare(input,output); var n,i,j:longint; ans,b:longint; function convert(x,b:longint):string; var i,j:longint; s1:string; s2:array[1..100]of longint; function caseit(x:longint):longint; begin if x in[48..57] then exit(x) else exit(x+7); end; begin j:=0; while x>0 do begin inc(j); s2[j]:=x mod b; x:=x div b; end; s1[0]:=chr(j); for i:=1 to j do s1[i]:=chr(caseit(s2[j-i+1]+48)); exit(s1); end; function huiwen(s:string):boolean; var i:longint; begin for i:=1 to length(s) div 2 do if s[i]<>s[length(s)-i+1] then exit(false); exit(true); end; begin assign(input,'palsquare.in');reset(input); assign(output,'palsquare.out');rewrite(output); readln(b); for i:=1 to 300 do begin ans:=i*i; if huiwen(convert(ans,b)) then writeln(convert(i,b),' ',convert(ans,b)); end; end.