不是VIP会员,不能显示答案

题目解答

题目:
(回文平方数)
如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”。例如,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;
}
考点: 0
分析:
解答: 1累加n
2设置初始化bo变量
3i对称位置n-i+1
4返回bo值
5题目给定
6输出当前i值
评论:
老师: 0