原先在《演算法競賽入門經典》看過這題,當時沒想出來選擇百度。結果洛谷再次跳出來了。很尷尬,忘了做題方法的我繼續百度。重做了一遍,很慚愧 1 #include <stdio.h> 2 #include <string.h> 3 int main(void) 4 { 5 int a, b; 6 int s ...
原先在《演算法競賽入門經典》看過這題,當時沒想出來選擇百度。結果洛谷再次跳出來了。很尷尬,忘了做題方法的我繼續百度。重做了一遍,很慚愧
1 #include <stdio.h> 2 #include <string.h> 3 int main(void) 4 { 5 int a, b; 6 int sum=0; 7 int ar[15]; 8 memset(ar, 0, sizeof(ar));//memset將ar數組全部格式化為0 9 for (int n = 111; n <= 333; n++)//在111前不會重覆,到333之後第三個數溢出1000 10 { 11 sum = 0;//重置計數器 12 a = n * 2; 13 b = n * 3; 14 ar[n / 100] = ar[n / 10 % 10] = ar[n % 10] = 1;//將出現的數字的位數在數組中記為1 15 ar[a / 100] = ar[a / 10 % 10] = ar[a % 10] = 1; 16 ar[b / 100] = ar[b / 10 % 10] = ar[b % 10] = 1; 17 for (int i = 1; i <= 9; i++) 18 sum += ar[i];//將數組中9個數字加起來 19 if (sum == 9)//若為9,則每個數字都出現過一遍 20 printf("%d %d %d\n", n, a, b); 21 memset(ar, 0, sizeof(ar));//重置數組 22 } 23 return 0; 24 25 }