求助大佬,第四个测试点RE

P1618 三连击(升级版)

Kriby_chen @ 2023-08-23 17:58:13

#include <bits/stdc++.h>
long long sum=0,sum2,sum3,a,b,c,l=1,h;
bool sw(int x,int y)
{
    int h=x,l=y;
    if(h%10==l%10) return 0;
    if(h%10==(l%100-l%10)/10) return 0;
    if(h%10==l/100) return 0;
    if((h%100-h%10)/10==l%10) return 0;
    if((h%100-h%10)/10==(l%100-l%10)/10) return 0;
    if((h%100-h%10)/10==l/100) return 0;
    if(h/100==l%10) return 0;
    if(h/100==(l%100-l%10)/10) return 0;
    if(h/100==l/100) return 0;
    if(h/100==0||(l%100-l%10)/10==0||h%10==0||l%10==0||(h%100-h%10)/10==0||l/100==0) return 0;
    return 1;
}
bool cj(int p)
{
    int a=p%10,b=(p%100-p%10)/10,c=p/100;
    if(a==b||b==c||c==a) return 0;
    return 1;
}
using namespace std;
int main()
{
    cin>>a>>b>>c;
    if(a==0){
        cout<<"No!!!"; 
        return 0;
    }
    if((__gcd((a*b/(__gcd(a,b))),c))!=0){
        h=(__gcd((a*b/(__gcd(a,b))),c));
        a/=h;
        b/=h;
        c/=h;
    }
    for(int i=1;i<=9;i++)
        for(int j=1;j<=9;j++)
            for(int z=1;z<=9;z++)
            {
                if(i==j||i==z||z==j) 
                    continue;
                sum=i*100+j*10+z;
                sum2=sum*b/a;
                sum3=sum*c/a;
                if(sum3>=1000)
                    break;
                if(sw(sum,sum2)&&sw(sum,sum3)&&sw(sum2,sum3)&&cj(sum2)&&cj(sum3)){
                    cout<<sum<<" "<<sum2<<" "<<sum3<<endl;
                    l=0;
                }

            }
            if(l==1) cout<<"No!!!";                                                                              
    return 0;
}

|