结果:906609,简单的暴力就可以解决,注意判断产生的回文数是否为最大即可。
#include<iostream>
using namespace std;
int main()
{
int i,j;
int ans=0;
for(i=999;i>=100;i--){
for(j=999;j>=100;j--){
long long temp = i*j;
int sw = temp/100000;
int w = temp/10000%10;
int q = temp/1000%10;
int b = temp/100%10;
int s = temp/10%10;
int g = temp%10;
if(sw==g&&w==s&&q==b){
if(temp>ans){
ans = temp;
}
}
}
}
cout<<ans<<endl;
return 0;
}
更新下做法,光暴力真的是什么用都没有的,最后都没什么收获
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
int is_valid(int x, int base) {
int raw = x,temp = 0;
while (x) {
//翻转的是base进制下的数字表示
temp = temp * base + x % base;
x /= base;
}
return temp == raw;
}
int main() {
int ans = -1;
for(int i = 100; i < 1000; i++) {
for(int j = i; j < 1000; j++ ){
if (is_valid(i * j, 10) && i * j > ans ){
ans = i*j;
}
}
}
cout<<ans<<endl;
return 0;
}