1 #include<stdio.h>
2 #include<string.h>
3 int a[10];
4 int main(){
5 for (int x=123;x<=329;x++){ //枚举
6 int i=x,j=x*2,k=x*3;
7 int o=i,p=j,q=k;
8 int flag=0; //清零
9 memset(a,0,sizeof(a)); //使数组a中所有存放内容的值全为0
10 while(i > 0){ //取数
11 a[i%10]++;
12 i/=10;
13 }
14 if(flag==1) continue;
15 while(j > 0){
16 a[j%10]++;
17 j/=10;
18 }
19 while(k > 0){
20 a[k%10]++;
21 k/=10;
22 }
23 for (int w=1;w<=9;w++){ //判断
24 if(a[w]!=1) flag=1;
25 }
26 if(flag==0) printf("%d %d %d
",o,p,q); //输出
27 }
28 return 0;
29 }
简单的暴力枚举题,唯一需注意的是要每次清零
//每次循环时设定满足1:2:3倍数关系的三个数字,巧妙地让a[x]中的x分别代表数字1~9,每次初始值清零,出现一次+1,最后用if(a[w] == 1)判断每个数字出现的次数,如果都为1则输出o,p,q