大意略。
/* ID:g0feng1 LANG:C++ TASK:dualpal */ #include <iostream> #include <fstream> #include <cstdlib> #include <cstdio> #include <string> #include <cstring> #include <cmath> #include <map> #include <algorithm> #include <stack> using namespace std; ofstream fout("dualpal.out"); ifstream fin("dualpal.in"); const int maxn = 100010; int b[maxn]; int n, s; void read_case() { fin>>n>>s; } int check(int *a, int n) { for(int i = 0; i < n/2; i++) if(a[i] != a[n-1-i]) return 0; return 1; } int change(int n, int base) { int s = n; int len2 = 0; s = n; while(s) { int t = s % base; s /= base; b[len2++] = t; } if(check(b, len2)) return 1; return 0; } void solve() { read_case(); int tot = 0; for(int i = s+1; ; i++) { int ans = 0; for(int j = 2; j <= 10; j++) { if(change(i, j)) { ans++; if(ans == 2) { tot++; fout<<i<<endl; break; } } } if(tot == n) break; } return ; } int main() { solve(); return 0; }