蒟蒻求助!!!

P1618 三连击(升级版)

Joker_Wang @ 2022-10-26 18:50:59

#include<bits/stdc++.h>
using namespace std;
int a,b,c;
bool vis[20];
bool fun(int x,int y,int z)
{
    memset(vis,0,sizeof(vis));
    while(x!=0)
    {
        if(x%10==0)
        {
            return false;
        }
        else if(vis[x%10]==true)
        {
            return false;
        }
        else
        {
            vis[x%10]=true;
        }
        x/=10;
    }
    x=y;
    while(x!=0)
    {
        if(x%10==0)
        {
            return false;
        }
        else if(vis[x%10]==true)
        {
            return false;
        }
        else
        {
            vis[x%10]=true;
        }
        x/=10;
    }
    x=z;
    while(x!=0)
    {
        if(x%10==0)
        {
            return false;
        }
        else if(vis[x%10]==true)
        {
            return false;
        }
        else
        {
            vis[x%10]=true;
        }
        x/=10;
    }
    return true;
}
int main()
{
    ios::sync_with_stdio(false);
    cin>>a>>b>>c;
    for(int i=100;i<=1000/3;i++)
    {
        if(i*(b/a)<1000&&i*(c/a)<1000)
        {
            if(fun(i,i*(b/a),i*(c/a)))
            {
                cout<<i<<' '<<i*(b/a)<<' '<<i*(c/a)<<'\n';
            }
        }
    }
    return 0;
}

by hjc999 @ 2023-07-05 11:27:56

代码:


#include "bits/stdc++.h"
using namespace std;

//记忆化
bool used[10]; 
int main(){
    int a,b,c,ans=0;cin>>a>>b>>c;
    for(int d1=1;d1<10;d1++){
        if(used[d1])continue;
        used[d1]=1;
        for(int d2=1;d2<10;d2++){
            if(used[d2])continue;
            used[d2]=1;
            for(int d3=1;d3<10;d3++){
                if(used[d3])continue;
                used[d3]=1;
                for(int d4=1;d4<10;d4++){
                    if(used[d4])continue;
                    used[d4]=1;
                    for(int d5=1;d5<10;d5++){
                        if(used[d5])continue;
                        used[d5]=1;
                        for(int d6=1;d6<10;d6++){
                            if(used[d6])continue;
                            used[d6]=1;
                            for(int d7=1;d7<10;d7++){
                                if(used[d7])continue;
                                used[d7]=1;
                                for(int d8=1;d8<10;d8++){
                                    if(used[d8])continue;
                                    used[d8]=1;
                                    for(int d9=1;d9<10;d9++){
                                        if(used[d9])continue;
                                        used[d9]=1;

                                        int A = d1*100+d2*10+d3;
                                        int B = d4*100+d5*10+d6;
                                        int C = d7*100+d8*10+d9;

                                        if(A*b==B*a and A*c==C*a){
                                            cout<<A<<" "<<B<<" "<<C<<endl;; 
                                            ans++;                                          
                                        }   

                                        used[d9]=0; 
                                    }
                                    used[d8]=0; 
                                }
                                used[d7]=0; 
                            }
                            used[d6]=0; 
                        }
                        used[d5]=0; 
                    }
                    used[d4]=0; 
                }
                used[d3]=0;
            }
            used[d2]=0;         
        }
        used[d1]=0;
    }

    if(!ans)cout<<"No!!!";

}

|