试题 基础练习 特殊回文数
思路
其实这题一开始我的想法就是暴力,枚举一下10000到1000000之间所有的数,但是加上回文判断和和判断,这两判断可以接近10次,所以整个算法复杂度就是10^7左右,可能可以过,我没有试过 这题最好枚举的对象,就是回文串,之间枚举5位数的回文串有哪些,和6位数的回文串有哪些,只要枚举三个位上的数字就行,算法复杂度就是10^3,大大减小了
代码
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <map>
#include <math.h>
using namespace std;
int main(){
int n;
cin >> n;
//枚举五位数的情况
for(int i=1;i<=9;i++){
//第一位
for(int j=0;j<=9;j++){
//第二位
for(int k=0;k<=9;k++){
//中间的一位
if(i*2+j*2+k==n){
cout << i*10000+j*1000+k*100+j*10+i << "
";
}
}
}
}
//枚举六位数的情况
for(int i=1;i<=9;i++){
//第一位
for(int j=0;j<=9;j++){
//第二位
for(int k=0;k<=9;k++){
//第三位
if(i*2+j*2+k*2==n){
cout << i*100000+j*10000+k*1000+k*100+j*10+i << "
";
}
}
}
}
}
