(回文平方数)
如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”。例如,12321就是一个回文数,而77778就不是。当然,回文数的首和尾都应是非零的,因此0220就不是回文数。
给定一个进制k(2≤k≤20,k由十进制表示),找到正整数n(1≤n≤1000,n由十进制表示),使得n和n的平方在k进制下都是回文数,输出所有满足要求的正整数n。
请根据上面的描述,完善如下程序:
#include <iostream>
using namespace std;
int k;
int a[100];
bool check(int x)
{
int n;//n用来记录x转换成 k 进制后的位数
bool bo;
//将x转换成k进制存入数组a中
n=0;
while(x)
{
n++;
a[n]=x%k;
x/=k;
}
//判断存储在 a 中的 k 进制是否回文
bo=true;
for (int i=1; i<=n/2; i++)
if (a[i]!= a[n-i+1] )
{
bo=false;
break;
}
return bo;
}
int main()
{
cin>>k;
for (int i=1; i<=1000; i++)
if (check(i) && check(i*i))
cout<< i <<endl;
return 0;
}