先将数字转化为字符,然后用短除法将其转化为B进制,用reverse将数字反转一下,再用bool判断其是否为回文数,最后输出
主要考察进制的转换
十进制转其他:短除法
其他转十进制:秦九韶算法
其他转其他:十进制过渡
AC代码如下
#include<iostream>
#include<string>
#include<bits/stdc++.h>
using namespace std;
int g[301];
int B;
char get(int n)
{
if (n <= 9) return '0' + n;
else return 'A' + n - 10;
}
string base(int n)
{
string num;
while (n) num += get(n % B), n /= B;
reverse(num.begin(), num.end());
return num;
}
bool huiwenshu(int num)
{
string s = base(num);
int l = 0, r = s.length() - 1;
while (l < r)
{
if (s[l++] != s[r--]) return false;
}
return true;
}
int main()
{
cin >> B;
for (int i = 1; i <= 300; i++)
{
if (huiwenshu(i * i))
cout << base(i) << " " << base(i * i) << endl;
}
return 0;
}