洛谷訓練P1008(循環+暴力)
阿新 • • 發佈:2019-05-16
輸出 round ack class 訓練 枚舉 inf for pan
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
洛谷訓練P1008(循環+暴力)