USACO 1.2-Palindromic Squares
/* ID: m1590291 PROG: palsquare LANG: C++ */ #include <fstream> #include <string> using namespace std; char NUMBER[20] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'}; string convert(int, int); bool is_plalindrome(string); int main() { ifstream fin("palsquare.in.txt"); ofstream fout("palsquare.out.txt"); int b; fin >> b; string num, square; for (int i = 1; i <= 300; ++i) { num = convert(i, b); square = convert(i*i, b); if (is_plalindrome(square)) fout << num << " " << square << "\n"; } return 0; } string convert(int n, int b) { string number; while (n) { number.insert(number.begin(), NUMBER[n%b]); n /= b; } return number; } bool is_plalindrome(string s) { for (string::iterator back = s.begin(), forward = s.end()-1; back < forward; ++back, --forward) { if (*back != *forward) return false; } return true; }