求由两个三位数相乘得到的最大回文数
什么是回文数
回文数是指一个数,它从前往后读和从后往前读的结果是一样的。
比如9009,102343201
代码如下
#include<iostream>
using namespace std;
//判断一个数是不是回文数
bool is_pal(int k)
{
int a[7] = {};
int n = 0;
while (k > 0)
{
a[n] = k % 10;
k /= 10;
n++;
}
int i = 0, j = n-1;
while (i <= j)
{
if (a[i] == a[j]) {
i++; j--;
}
else return false;
}
return true;
}
int main()
{
int max = 0;
int i = 999;
int a = 999;
for (; i > 99; i--,a--)//减少一半的计算量
{
for (int j=a; j > 99; j--)
{
int temp = i * j;
if (is_pal(temp))
if (max < temp) max = temp;
}
}
cout<<max;
}