A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.
Find the largest palindrome made from the product of two 3-digit numbers.
求2個3位元能得到的最大的迴文數
這裡要注意兩點:
第一,這個數要是迴文數
第二, 這個數必須是2個3位元相乘得來的
第三,它必需是最大的
這裡可以根據數的範圍選取需要使用的類型,我選擇無符號長整形。算起來還是挺快的,不到2秒就出來了。
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
bool isPalindrome(unsigned long int n);
int main(int argc, char *argv[])
{
int i = 100, j = 100;
unsigned long max = 10000;
for(i = 100; i < 1000; i++)
for(j = 100; j < 1000; j++)
{
unsigned long tmp = i * j;
if(isPalindrome(tmp))
{
if(tmp > max)
max = tmp;
}
}
printf("%lu", max);
system("PAUSE");
return 0;
}
bool isPalindrome(unsigned long int n)
{
int i;
char s[11];
memset(s, '\0', 11);
int str = sprintf(s, "%lu", n);
for(i = 0; i < str/2; i++)
{
if(s[i] != s[str -1 - i])
return false;
}
return true;
}