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!!! "); } }