洛谷训练P1008(循环+暴力)

 

 

 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\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

posted @ 2019-05-15 22:01  EPEP  阅读(701)  评论(0编辑  收藏  举报