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.题目来源:
相关文章推荐
- USACO Palindromic Squares(string)
- usaco Palindromic Squares
- USACO: Section 1.2 -- PROB Palindromic Squares
- USACO1.2.4 回文平方数
- 1.2.4 & 1.2.5 Palindromic Squares & Dual Palindromes【水】
- USACO Palindromic Squares
- USACO Palindromic Squares (数制转换)
- 经典进制转换——USACO Palindromic Squares
- USACO Solution Code(5):Name That number, Palindromic Squares and Dual Palindromes
- USACO 1.2.4 Palindromic Squares 回文平方数
- 【USACO 1.2.4】回文平方数
- usaco Palindromic Squares
- USACO Palindromic Squares 【STL__string_的应用】
- USACO Palindromic Squares
- usaco Palindromic Squares
- usaco Palindromic Squares 解题报告
- usaco Palindromic Squares (N进制下的回文串)
- [USACO 1.2.4]回文平方数
- usaco Palindromic Squares
- usaco Palindromic Squares