USACO 1.2-Dual Palindromes
/* ID: m1590291 TASK: dualpal LANG: C++ */ #include <iostream> #include <fstream> using namespace std; ifstream fin ("dualpal.in"); ofstream fout ("dualpal.out"); const char a[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; int n, m; bool check(int n, int m) { string s(""); do { s = a[n % m] + s; n /= m; } while (n > 0); if (s.size() == 1) return true; for (int i = 0; i <= s.size() / 2 - 1; i++) if (s[i] != s[s.size() - i - 1]) return false; return true; } int main(void) { int tot(0), k; fin >> n >> m; for (int i = m + 1; tot < n; i++) { k = 0; for (int j = 2; j <= 10; j++) { if (check(i, j)) k++; if (k == 2) { tot++; fout << i << endl; break; } } } return 0; }