回文数是指从前往后读和从后往前读都一样的数。由两个2位数相乘得到的回文数中,最大的是 9009=91×99。求最大的由两个3位数相乘得到的回文数。
这个题的解法我只想到了暴力解,也就是100到999进行两个循环枚举,对比的话我用了字符串进行来对比,因为可以减少时间
代码如下
#include <stdio.h>
#include <string.h>
char a[1000] = {0};
char b[1000] = {0};
int func() {
for(int i = 0, j = strlen(a) - 1; i < strlen(a); i++, j--){
b[i] = a[j];
}
return strcmp(a,b);
}
int main() {
char max[105] = {0};
for(int i = 100; i <= 999; i++) {
for(int j = i; j <= 999; j++) {
int s = i * j;
int g = 0;
sprintf(a,"%d", s);//把s打印到a字符串种;
if(s % 11 == 0 && !func()){
if(strcmp(a,max) > 0) strcpy(max,a);
}
}
}
printf("%s\n", max);
return 0;
}
答案906609