您的位置:首页 > 其它

Usaco 1.2.4 回文平方数(Palindromic Squares)

2011-08-05 10:31 337 查看
题目:

回文平方数

来源:

Usaco1.2.4

题目大意:

1到300之间的在B进制下平方为回文的输出该B进制数和其平方数

数据范围:

2<=B<=20

样例:

10













11

24

39

11121

22484

26676

10110201

11112321

12114641

20240804

21244944

26469696



做题思路:

无比感叹的说,原来辗转相除这么有用啊。。用辗转相除来转换进制,再判断是否是回文,判断回文:从两头向中间比较好用因为不用管奇偶

知识点:

进制转换/辗转相除、判断回文、模拟

{
ID:DountNameless
TASK:palsquare
LANG:PASCAL
}
var
a,b:array[0..90000]oflongint;
n,i,j,x,k,t:longint;
functionpd(x:longint):boolean;{<判断回文>}
var
i,j:longint;
begin
i:=1;j:=x;
while(a[i]=a[j])and(i<=j)do
begin
inc(i);dec(j);
end;
ifi>=jthenexit(true);
exit(false);
end;
begin
assign(input,'palsquare.in');reset(input);
assign(output,'palsquare.out');rewrite(output);
readln(n);
fori:=1to300do
begin
x:=sqr(i);
j:=0;
whilex>0do{<辗转>}
begin
inc(j);
a[j]:=xmodn;
x:=xdivn;
end;
ifpd(j)then
begin
x:=i;
k:=0;
whilex>0do{<辗转>}
begin
inc(k);
b[k]:=xmodn;
x:=xdivn;
end;
fort:=kdownto1do{<倒着输出,因为是倒着辗转的>}
ifb[t]>9thenwrite(chr(b[t]-9+64))
elsewrite(b[t]);
write('');
fort:=jdownto1do
ifa[t]>9thenwrite(chr(a[t]-9+64))
elsewrite(a[t]);
writeln;
end;
end;
close(input);close(output);
end.题目来源:http://ace.delos.com/usacoprob2?a=RexmW8CclSt&S=palsquare
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: