题目描述
回文数是指从左向右念和从右向左念都一样的数。如12321就是一个典型的回文数。
给定一个进制B(2<=B<=20,由十进制表示),输出所有的大于等于1小于等于300(十进制下)且它的平方用B进制表示时是回文数的数。用’A’,’B’……表示10,11等等。
输入
共一行,一个单独的整数B(B用十进制表示)。
输出
每行两个B进制的符合要求的数字,第二个数是第一个数的平方,且第二个数是回文数。
样例输入
10
样例输出
1 1
2 4
3 9
11 121
22 484
26 676
101 10201
111 12321
121 14641
202 40804
212 44944
264 69696
参考代码
#include<stdio.h>
int a[300];
int b;
void zhuanhua(int x)
{
int a1[300];
int i = 0;
while(x)
{
a1[++i] = x % b;
x = x / b;
}
while(i)
{
if(a1[i] < 10)
printf("%d", a1[i]); else
printf("%c", a1[i] - 10 + 'A');
i--;
}
}
void huiwen(int x1)
{
int temp = 0;
int x = x1 * x1;
while(x)
{
a[++temp] = x % b;
x = x / b;
}
int t = temp, i = temp;
while(i > 0 && a[i] == a[t - i + 1])
i--;
if(i == 0)
{
zhuanhua(x1);
printf(" ");
while(temp)
{
if(a[temp] < 10)
printf("%d", a[temp]); else
printf("%c", a[temp] - 10 + 'A');
temp--;
}
printf("n");
}
}
int main()
{
int i;
scanf("%d", &b);
for(i = 1; i <= 300; ++i)
huiwen(i);
return 0;
}
解析
暂无