在本教程中,我们将讨论一个程序来查找回文数,即回文数的平方。
为此,我们将获得两个值L和R。我们的任务是找到给定范围内的超级回文数。超级回文集是数字和平方均是回文集的超级回文集。
#include <bits/stdc++.h> using namespace std; //检查数字是否是回文 bool if_palin(int x){ int ans = 0; int temp = x; while (temp > 0){ ans = 10 * ans + temp % 10; temp = temp / 10; } return ans == x; } //返回回文数 int is_spalin(int L, int R){ //上限 int LIMIT = 100000; int ans = 0; for (int i = 0 ;i < LIMIT; i++){ string s = to_string(i); string rs = s.substr(0, s.size() - 1); reverse(rs.begin(), rs.end()); string p = s + rs; int p_sq = pow(stoi(p), 2); if (p_sq > R) break; if (p_sq >= L and if_palin(p_sq)) ans = ans + 1; } //计算均匀长度的回文数 for (int i = 0 ;i < LIMIT; i++){ string s = to_string(i); string rs = s; reverse(rs.begin(), rs.end()); string p = s + rs; int p_sq = pow(stoi(p), 2); if (p_sq > R) break; if (p_sq >= L and if_palin(p_sq)) ans = ans + 1; } return ans; } int main(){ string L = "4"; string R = "1000"; printf("%d\n", is_spalin(stoi(L), stoi(R))); return 0; }
输出结果
4