zoukankan      html  css  js  c++  java
  • Project Euler Problem 4: Largest palindrome product

    Largest palindrome product

    Problem 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.


    C++:

    #include <iostream>
    
    using namespace std;
    
    const int FROM = 100;
    const int TO = 999;
    
    bool ispalindrome(int product)
    {
        int miror = 0, temp;
    
        temp = product;
        while(temp) {
            miror *= 10;
            miror += temp % 10;
    
            temp /= 10;
        }
    
        return miror == product;
    }
    
    int main()
    {
        int maxpalindrome = 0, temp;
    
        for(int i=TO; i>=FROM; i--)
            for(int j=TO; j>=FROM; j--) {
                temp = i * j;
                if(temp < maxpalindrome)
                    break;
    
                if(ispalindrome(temp))
                    if(temp > maxpalindrome)
                        maxpalindrome = temp;
            }
    
        cout << maxpalindrome << endl;
    
        return 0;
    }



    C++:

    #include <iostream>
    #include <queue>
    #include <cstdio>
    #include <cstring>
    
    using namespace std;
    
    const int MAXN = 1000000;
    const int FROM = 100;
    const int TO = 999;
    
    struct node {
        int a, b, product;
        bool operator < (const node& n) const {
            return product < n.product;
        }
    };
    
    bool ispalindrome1(int product)
    {
        char s[MAXN+1];
        int start, end;
        bool isp = true;
    
        sprintf(s, "%d", product);
    
        start = 0;
        end = strlen(s)-1;
        while(start <= end) {
            if(s[start] != s[end]) {
                isp = false;
                break;
            }
            start++;
            end--;
        }
    
        return isp;
    }
    
    bool ispalindrome2(int product)
    {
        int miror = 0, temp;
    
        temp = product;
        while(temp) {
            miror *= 10;
            miror += temp % 10;
    
            temp /= 10;
        }
    
        return miror == product;
    }
    
    int main()
    {
        priority_queue<node> q;
        node t;
    
        for(int i=FROM; i<=TO; i++)
            for(int j=FROM; j<=TO; j++) {
                t.a = i;
                t.b = j;
                t.product = i * j;
    
                q.push(t);
            }
    
        while(!q.empty()) {
            t = q.top();
            q.pop();
    
            if(ispalindrome2(t.product)) {
                cout << t.product << endl;
                break;
            }
        }
    
        return 0;
    }


    Run results:

    906609


  • 相关阅读:
    细说google,baidu引擎收录习惯
    考研机试 11.二叉树遍历
    考研机试 18.特殊乘法
    考研机试 19.今年的第几天
    考研机试 20.完数VS盈数
    考研机试 12.玛雅人的密码
    考研机试 10.球的半径和体积
    考研机试 17.n的阶乘
    考研机试 15.abc
    考研机试 9.成绩排序
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564043.html
Copyright © 2011-2022 走看看