思路及代码:
由于只考虑5位和6位回文数,3个 for 循环次数为9*10*10还可以,就直接遍历了
//input n int 10< <100
#include<iostream>
using namespace std;
int main(){
int n;
cin >> n;
int ans = 0;
//solution
//判断是否是5位或6位回文数;判断各个位数之和等于输入的整数;
//5位数回文数之和 2倍1、2位+3位 5位数回文数有9*10*10个
//6位数回文数之和 2倍1、2、3位 6位数回文数有9*10*10个
//找到,cout 回文数
for (int i = 1; i <= 9; i++){
for (int j = 0; j <= 9;j++){
for (int k = 0; k <= 9; k++){
if (2*i+2*j+k == n){
ans = i*10000 + j*1000 + k*100 + j*10 + i;
cout << ans << endl;
}
}
}
}
for (int i = 1; i <= 9; i++){
for (int j = 0; j <= 9;j++){
for (int k = 0; k <= 9; k++){
if (2*(i+j+k) == n ){
ans = i*100000 + j*10000 + k*1000 + k*100 + j*10 + i;
cout << ans << endl;
}
}
}
}
//找不到,cout -1
if (ans == 0){
cout << -1 <<endl;
}
return 0;
}
参考:无
收获:无
菜菜,不是教程,做题和学习记录