(水题)洛谷

https://www.luogu.org/problemnew/show/P1618

枚举所有的A,最多 $A_9^3$ ,然后生成B和C(先判断是不是能够生成),判断有没有重复数字(比之前那个优雅多了)。

 $10^3$ 的水题,但是我忘记输出No的情况,玄学。

#include<bits/stdc++.h>
using namespace std;
#define ll long long

int A,B,C;

set<int>ans;

void solve(int a1,int a2,int a3){
    int cA=100*a1+10*a2+a3;
    int cB,cC;
    if(cA%A!=0)
        return;
    cB=cA/A*B;
    cC=cA/A*C;

    if(cB>=1000||cC>=1000)
        return;

    int used[10];
    for(int i=0;i<=9;i++)
        used[i]=0;
    used[a1]++;
    used[a2]++;
    used[a3]++;

    while(cB){
        used[cB%10]++;
        cB/=10;
    }

    while(cC){
        used[cC%10]++;
        cC/=10;
    }

    for(int i=1;i<=9;i++){
        if(used[i]!=1)
            return;
    }
    ans.insert(cA);
}

int main(){
    scanf("%d%d%d",&A,&B,&C);
    if(A==0){
        puts("No!!!");
        return 0;
    }
    for(int i=1;i<=9;i++){
        for(int j=1;j<=9;j++){
            if(j==i)
                continue;
            for(int k=1;k<=9;k++){
                if(k==j||k==i)
                    continue;
                else{
                    solve(i,j,k);
                }
            }
        }
    }

    if(ans.size())
        for(auto i:ans){
            printf("%d %d %d
",i,i/A*B,i/A*C);
        }
    else{
        printf("No!!!
");
    }
}
原文地址:https://www.cnblogs.com/Yinku/p/10315762.html