zoukankan      html  css  js  c++  java
  • Project Euler Problem 38 Pandigital multiples

    Pandigital multiples

    Problem 38

    Take the number 192 and multiply it by each of 1, 2, and 3:

    192 × 1 = 192

    192 × 2 = 384

    192 × 3 = 576

    By concatenating each product we get the 1 to 9 pandigital, 192384576. We will call 192384576 the concatenated product of 192 and (1,2,3)

    The same can be achieved by starting with 9 and multiplying by 1, 2, 3, 4, and 5, giving the pandigital, 918273645, which is the concatenated product of 9 and (1,2,3,4,5).

    What is the largest 1 to 9 pandigital 9-digit number that can be formed as the concatenated product of an integer with (1,2, ... , n) where n > 1?


    C++:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    
    using namespace std;
    
    const long N = 10000;
    
    bool ispandigital(int n) {
        int digits = 0b1111111110;
    
        while (n) {
            digits ^= 1 << (n % 10);
            n /= 10;
        }
    
        return !digits;
    }
    
    int main()
    {
        int val, max=0, j;
        char s[32], t[32];
    
        for(int i=1; i<=N; i++) {
            s[0] = '';
            t[0] = '';
            j = 1;
            while(strlen(s) < 9) {
                sprintf(t, "%d", i * j);
                strcat(s, t);
                j++;
            }
            if(strlen(s) == 9) {
                val = atoi(s);
                if(ispandigital(val))
                    if(val > max)
                        max = val;
            }
        }
    
        cout << max << endl;
    
        return 0;
    }


  • 相关阅读:
    Redis常见数据类型
    MYSQL常见可优化场景
    算术切片
    找数组里没出现的数
    不同路径和(II)
    不同路径和
    最小路径和
    强盗抢房子
    丑数(2)
    判断子序列
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7563992.html
Copyright © 2011-2022 走看看