Day 7 acwing打卡 1346.回文平方
回文数是指数字从前往后读和从后往前读都相同的数字。
例如数字 1232112321 就是典型的回文数字。
现在给定你一个整数 BB,请你判断 1∼3001∼300 之间的所有整数中,有哪些整数的平方转化为 BB 进制后,其 BB 进制表示是回文数字。
输入格式
一个整数 BB。
输出格式
每行包含两个在 BB 进制下表示的数字。
第一个表示满足平方值转化为 BB 进制后是回文数字那个数,第二个数表示第一个数的平方。
所有满足条件的数字按从小到大顺序依次输出。
数据范围
2≤B≤202≤B≤20,
对于大于 99 的数字,用 AA 表示 1010,用 BB 表示 1111,以此类推。
输入样例:
10
输出样例:
1 1 2 4 3 9 11 121 22 484 26 676 101 10201 111 12321 121 14641 202 40804 212 44944 264 69696
#include<iostream> #include<algorithm> #include<string> using namespace std; int n; char getch(int b) { if(b >= 10) return b - 10 + 'A'; else return b + '0'; } bool judge(string s) { for(int i = 0, j = s.length() - 1; i < j; i++, j--) if(s[i] != s[j]) return false; return true; } string base(int num){ string st = ""; int x = 0; while(num){ x = num % n; st += getch(x); num /= n; } reverse(st.begin(), st.end()); return st; } int main() { cin >> n; for(int i = 1; i <= 300; i++) { string st = base(i * i); if(judge(st)) cout<< base(i) << " "<< st <<endl; } return 0; }