双重回文
思想:
- 模拟,枚举。
- 枚举进制从
i = 2到10,判断i进制下是否为回文。 - 将数转换进制后,转换为
string进行判断即可。
- 枚举进制从
代码:
cpp
#include <bits/stdc++.h>
using namespace std;
bool check(int x) {
int cnt = 0;
for (int i = 2; i <= 10; i++) {
int xx = x;
string a = ""; //保存当前进制的数
while (xx) {
int t = xx % i; //取 i 进制下的当前位的值
a += to_string(t);
xx /= i;
}
string b = a;
reverse(b.begin(), b.end()); //翻转判断
if (a == b) cnt++;
if (cnt == 2) return 1; //在两个进制下都为回文串满足题意
}
return 0;
}
void solve() {
int n, m;
cin >> n >> m;
while (n) {
m++;
if (check(m)) {
cout << m << endl;
n--;
}
}
}
int main() {
solve();
return 0;
}