• 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


  • 相关阅读:
    GDI+ 实现透明水印和文字
    delphi调用LUA函数来处理一些逻辑
    Delphi 不使用自带模板创建服务
    Delphi在Listview中加入Edit控件
    中文转码器的工作原理_delphi教程
    使用钩子函数[6]
    简单全局HOOK拦截大部分键盘消息
    4个字节就相当于移动一位,原来指针是这样用的
    C#调用Delphi接口(ITest = interface)
    DELPHI 对象的本质 VMT
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564042.html
Copyright © 2020-2023  润新知