回文定义:
回文数是指数字从前往后读和从后往前读都相同的数字。
例如数字 12321 就是典型的回文数字。
题意:
现在给定你一个整数 B,请你判断 1∼300之间的所有整数中,有哪些整数的平方转化为 B 进制后,其 B 进制表示是回文数字。
数据范围
2≤B≤20
注意:对于大于 9 的数字,用 A表示 10,用 B 表示 11,以此类推。
做题详解
#include <bits/stdc++.h>
using namespace std;
char d[11] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K'};
void change(int a, int n) {
int i = 0, c[10] ;
while (a) {
c[i] = a % n;
a /= n;
i++;
}
while (i--) {
c[i] >= 10 ? cout << d[c[i] - 10] : cout << c[i];
}
cout << " ";
}
int main() {
int n, a[100];
cin >> n;
for (int i = 1; i <= 300; i++) {
int x = i * i, s, res = 1, l = true;
while (x != 0) {
s = x % n;
x /= n;
a[res] = s ;
res++;
}
for (int j = 1, k = res - 1; j < k; j++, k--) {
if (a[j] >= 10 || a[k] >= 10)
a[j] >= 10 ? d[a[j] - 10] : d[a[k] - 10];
if (a[j] != a[k])
l = false;
}
if (l) {
change(i, n) ;
for (int j = res - 1; j >= 1; j--) {
a[j] >= 10 ? cout << d[a[j] - 10] : cout << a[j];
}
cout << endl;
}
else
l = true;
}
return 0;
}