Project Euler 4

 

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);
                            }
                        }
                    }
            }
    }


 

作者:michaelxi007 发表于2013-11-17 23:14:01 原文链接
阅读:23 评论:0 查看评论

 

转载于:https://www.cnblogs.com/qingshuimonk/p/3496674.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值