思路: 枚举 符合条件则输出;
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{int a,b,c,x,y,z,t,flag,p,w[10],flagz=0; //检查有无scanf("%d %d %d",&a,&b,&c);for(int i=1; i<10; i++){for(int j=1; j<10; j++){if(j==i) j++;for(int k=1; k<10; k++) //三重循环表示x{memset(w, 0, sizeof(w)); //清空数组(不能放在此重循环最后,会被break忽略)while(k==i||k==j) k++; //去重x=i*100+j*10+k;y=x*b/a; z=x*c/a; //用比例关系表示y,zif(z>999||k>9) break;//printf("%d %d %d\n",x,y,z); flag=1;w[i]++;w[j]++;w[k]++; //用桶表示数的有无//printf("%d %d %d\n",i,j,k);p=y;//printf("p%d",p);while(p>0) {t=p%10;w[t]++;//printf("%d\n",t); //分解各位if(w[t]>1||t==0) {flag=0; break;}p/=10;}p=z;while(p>0) {t=p%10;w[t]++;//printf("%d\n",t);if(w[t]>1||t==0) {flag=0; break;} p/=10;}if(flag) {printf("%d %d %d\n",x,y,z); flagz=1; }}}}if(flagz==0) printf("No!!!\n");return 0;
}