Pandigital products

这是Project Euler的第32题,需要用1-9组成乘积等式,求所有的乘积和。

#include
#include
#include
#include
#include
using namespace std;

bool check(int i,int j,int k){
     
    string s=to_string(i)+to_string(j)+to_string(k);
    sort(s.begin(),s.end());
    return s=="123456789";
}

int main(){
     
    set<int> res;
    long long ans = 0;
    int j = 999;
    for(int i=2;i<99;i++){
     
        while(j>100&&i*j>1e4){
     
            j--;
        }
        int k = j;
        while(k>100&&i*k-->1e3){
     
            if(check(i,k,i*k)){
     
                cout<<i<<" "<<k<<" "<<i*k<<endl;
                res.insert(i*k);
            } 
        }
    }
    j = 9999;
    for(int i=2;i<9;i++){
     
        while(j>1000&&i*j>1e4){
     
            j--;
        }
        int k = j;
        while(k>1000&&i*k-->1e3){
     
            if(check(i,k,i*k)){
     
                cout<<i<<" "<<k<<" "<<i*k<<endl;
                res.insert(i*k);
            } 
        }
    }
    for(auto s:res){
     
        ans+=s;
    }
    cout<<ans<<endl;
    return 0;
}

你可能感兴趣的:(编程基础)