4.(Microsoft Visual Stdio 2010)
一个回文数指的是从左向右和从右向左读都一样的数字。最大的由两个两位数乘积构成的回文数是9009 = 91 * 99.
找出最大的有由个三位数乘积构成的回文数。
代码:
#include<stdio.h>//998001 906609
int f(int n);
int main(int argc, char ** argv)
{
int i,j,k,n=0;
for ( i = 9; i >=0 ; i--)
{
for (j = 9; j >= 0; j--)
{
for (k = 9; k >= 0; k--)
{
n = i * 100000 + j * 10000 + k * 1000 + k * 100 + j * 10 + i;
if (f(n))
{
printf("The best is %d\n", n);
return 0;
}
}
}
}
return 0;
}
int f(int n)
{
int t;
if (n > 998001)
{
return 0;
}
for (t = 999; t > 100; t--)
{
if (n%t == 0)
{
return 1;
}
if (n / t > t)
{
return 0;
}
}
}