USACO 1.2 回文平方数
2016-04-08 21:43
288 查看
Description 回文数是指从左向右念和从右像做念都一样的数。如12321就是一个典型的回文数。 给定一个进制B(2<=B<=20十进制),输出所有的大于等于1小于等于300且它的平方用B进制表示时是回文数的数。用’A’,’B’……表示10,11等等。Input共一行,一个单独的整数B(B用十进制表示)。Output每行两个数字,第二个数是第一个数的平方,且第二个数是回文数。(注意:这两个数都应该在B那个进制下)Sample Input
10Sample Output
1 1
2 4
3 9
11 121
22 484
26 676
101 10201
111 12321
121 14641
202 40804
212 44944
264 69696
解题思路:从1到300进行循环,进行判断,如果它是循环的话,就进行处理,并判断它在该进制以及它的平方数是否回文,如果是的话就输出。
程序:
var
arr:array[0..1000]of char;
n,count,i,j:longint;
function check(count:longint):longint;
var
a,i:longint;
begin
a:=count div 2;
for i:=0 to a do
if arr[i]<>arr[count-i] then exit(0);
exit(1);
end;
function convert(i,n:longint):longint;
var
q:longint;
begin
q:=-1;
while i<>0 do
begin
q:=q+1;
if i mod n>=10 then arr[q]:=chr(i mod n-10+ord('A'))
else arr[q]:=chr(i mod n+48);
i:=i div n;
end;
exit(q);
end;
procedure convert_2(i,n:longint);
var
crr:array[0..1000]of char;
q,j:longint;
begin
q:=-1;
while i<>0 do
begin
q:=q+1;
if i mod n>=10 then crr[q]:=chr(i mod n-10+ord('A'))
else crr[q]:=chr(i mod n+48);
i:=i div n;
end;
for j:=q downto 0 do
write(crr[j]);
write(' ');
end;
begin
readln(n);
for i:=1 to 300 do
begin
count:=convert(i*i,n);
if check(count)<>0 then
begin
convert_2(i,n);
for j:=count downto 0 do
write(arr[j]);
writeln;
end;
end;
end.
相关文章推荐
- USACO&nbsp;1.2&nbsp;方块转换
- USACO&nbsp;1.2&nbsp;挤牛奶
- USACO&nbsp;1.1&nbsp;你要乘坐的飞碟在这里
- USACO&nbsp;1.1&nbsp;黑色星期五
- USACO&nbsp;1.1&nbsp;贪婪的礼物送礼者
- USACO&nbsp;1.1&nbsp;破碎的项链
- 求二叉树的后序遍历(树)
- 查找单词树(树)
- 约瑟夫问题(指针变量及线性链表)
- Android 开发知识点
- c#输入
- js 将json字符串转为js对象
- Android适配器之ArrayAdapter、SimpleAdapter和BaseAdapter的简单用法
- 【脚本化文档】——属性&元素的内容
- ACM程序设计选修课——1076汇编语言(重定向+模拟)
- 麻将游戏(广度优先搜索)
- 删数问题(指针变量与线性链表)
- 建先进先出的链表(指针变量及线性…
- 最优乘车(广度优先搜索)
- 骑士旅行(广度优先搜索)