三個三位數,第一加第二等於第三,三個數所有各個位的數都不相同(1-9),第二個數是第一個數的兩倍,求三個數

 


  1. public class Test { 
  2.  
  3.     public static void main(String[] args) { 
  4.         int arr[] = new int[1000]; 
  5.         int a, b, c, d, e, f, k, i; 
  6.         int x, y, z, o, p, q, r, s, t; 
  7.         for (i = 123, k = 0; i <= 987; i++) { 
  8.             a = i % 10
  9.             b = i / 10 % 10
  10.             c = i / 100
  11.             if (a != b && b != c && a != c && b != 0 && a != 0) {  //求得一個三位數的各個位數都不相同,並存到數組中 
  12.                 arr[k] = i; 
  13.                 k++; 
  14.             } 
  15.         } 
  16.         int sum = 1
  17.         for (int m = 1; m <= 9; m++)  //求得9! 
  18.             sum = sum * m; 
  19. //System.out.println(sum); 
  20.  
  21.         for (d = 0; d <= arr.length - 1 && arr[d] != 0; d++) { 
  22.             o = arr[d] % 10
  23.             p = arr[d] / 10 % 10
  24.             q = arr[d] / 100
  25.             for (e = 0; e <= arr.length - 1 && arr[e] != 0; e++) { 
  26.                 r = arr[e] % 10
  27.                 s = arr[e] / 10 % 10
  28.                 t = arr[e] / 100
  29.                 if(arr[d]==arr[e]) continue;  //爲減少循環的次數,當第一個數與第二個數相同時,繼續下一層循環 
  30.                 for (f = 0; f <= arr.length - 1 && arr[f] != 0; f++) { 
  31.                     x = arr[f] % 10
  32.                     y = arr[f] / 10 % 10
  33.                     z = arr[f] / 100
  34.                     if(arr[f]==arr[e]||arr[f]==arr[d]) continue;//同上 
  35.                     if (((arr[d] + arr[e]) == arr[f]) && (arr[e] == 2 * arr[d]) 
  36.                             && (o * p * q * s * r * t * x * y * z == sum)) 
  37.                         System.out.println(arr[d] + " " + arr[e] + " " + arr[f]); 
  38.                 } 
  39.             } 
  40.         } 
  41.  
  42.     } 
  43.  



運行結果:

192 384 576

219 438 657

273 546 819

327 654 981


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章