1 #include2 #include 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\n",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