Project Euler 4

来源:互联网 发布:孙杨牙齿 知乎 编辑:程序博客网 时间:2024/06/09 17:16

本文章来自我的个人网站,如感兴趣,欢迎访问我的个人网站:http://www.qingshuimonk.com/


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.

今天做了PE的第四道题,遇到了一些麻烦,不过比第三题要好些。

基于第三题的惨痛经历,拿着这道题,总觉得会有一些很tricky的方法,结果想了半天没有进展。结果看了看别人的解法,原来还是遍历……

1.找出回文数,因为题上要求是最大的三位数乘积回文数,所以就从大往小遍历,三位数最大乘积998001,所以就从998001到100000.
判断一个数是否是回文数的程序:

  int Palindromic(int n)  {    int palindromic = 0;    int first,second,third,fourth,fifth,sixth;    first = n/100000;    second = n%100000/10000;    third = n%10000/1000;    fourth = n%1000/100;    fifth = n%100/10;    sixth = n%10;    if(first == sixth)        if(second == fifth)            if(third == fourth)palindromic = 1;    return(palindromic);  }

2.判断这个回文数能否分为两个三位数之积。让i从100到999,若能除尽且商也在100到999之间则输出此时的回文数并终止程序。

  for(n = 998001; n >= 100000; n--)    {        if(Palindromic(n))            {                for(i = 100; i < = 999; i++)                                         {                                                 if(n%i == 0)                                                     {                                                             if((n/i >= 100)&&(n/i < = 999))                            {                                printf("the number is %d\n", n);                                printf("%d\n",i);                                exit(0);                            }                        }                    }            }    }



原创粉丝点击