思路:暴力枚举
对于 1 到 300 的每个数字的平方 n 进行如下操作
-
将 n 转化为对应进制字符串 s
-
检查 s 是否为回文。是:输出,不是:检查下一个数字
//cpp
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
char get(int x)//将x转换为字符形式
{
if (x <= 9) return x + '0';
return x - 10 + 'A';
}
string base(int n, int b)//将n转换为b进制,返回对应字符串
{
string res;
while (n)
{
res += get(n % b);
n /= b;
}
reverse(res.begin(), res.end());//翻转回高位在左
return res;
}
bool check(string s)//检查s是否是回文
{
for (int i = 0, j = s.size() - 1; i < j; i ++, j -- )
if (s[i] != s[j])
return false;
return true;
}
int main()
{
int b;
cin >> b;
for (int i = 1; i <= 300; i ++ )//暴力
{
string num = base(i * i, b);
if (check(num))
cout << base(i, b) << ' ' << num << endl;
}
return 0;
}
//参考yxc
觉得不错,欢迎点赞~
a 进制 b 进制相互转换,可以查看这个
https://mp.weixin.qq.com/s/eBjb4sDREqqDoTgsrDilpQ
x - 10 + ‘A’;这句是什么意思QAQ
数字转换成字符,例如x等于12 ,x就会转换成C