1. 程式人生 > >[藍橋] 基礎練習 特殊回文數

[藍橋] 基礎練習 特殊回文數

練習 ++ scan can 特殊 n) 條件 tin ann

問題描述

  123321是一個非常特殊的數,它從左邊讀和從右邊讀是一樣的。
  輸入一個正整數n, 編程求所有這樣的五位和六位十進制數,滿足各位數字之和等於n 。

輸入格式

輸入一行,包含一個正整數n。

輸出格式

按從小到大的順序輸出滿足條件的整數,每個整數占一行。

樣例輸入

52

樣例輸出

899998
989989
998899

數據規模和約定

1<=n<=54。

方法1:

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     public static void
main(String[] args) { 5 Scanner scanner = new Scanner(System.in); 6 int n = scanner.nextInt(); 7 long sum; 8 for(int i = 1;i <= 9;i++) 9 for(int j = 0;j <= 9;j++) 10 for(int k = 0;k <= 9;k++) 11 if(2 * (i + j) + k == n) {
12 sum = i * 10001 + j * 1010 + k * 100; 13 System.out.println(sum); 14 } 15 for(int i = 1;i <= 9;i++) 16 for(int j = 0;j <= 9;j++) 17 for(int k = 0;k <= 9;k++) 18 if(2 * (i + j + k) == n) {
19 sum = i * 100001 + j * 10010 + k * 1100; 20 System.out.println(sum); 21 } 22 } 23 }

方法2:

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         Scanner scanner = new Scanner(System.in);
 6         int n = scanner.nextInt();
 7         int[] arr = new int[6];
 8         for(int i=11111;i<=99999;i++) {
 9             int t = 0;
10             int s = i;
11             while(s != 0) {
12                 arr[t++] = s % 10;
13                 s /= 10;
14             }
15             int sum = 0;
16             for(int j = 0;j < 5;j++) {
17                 sum += arr[j];
18             }
19             if(sum == n) {
20                 int j;
21                 for(j = 0;j < 3;j++) {
22                     if(arr[j] != arr[4-j])
23                         break;
24                 }
25                 if(j == 3) {
26                     for(int k = 0;k < 5 ;k++) {
27                         System.out.print(arr[k]);
28                     }
29                     System.out.println();
30                 }
31             }
32         }
33         for(int i = 111111;i <= 999999;i++) {
34             int t = 0;
35             int s = i;
36             while(s != 0) {
37                 arr[t++] = s % 10;
38                 s /= 10;
39             }
40             int sum = 0;
41             for(int j = 0;j < 6;j++) {
42                 sum += arr[j];
43             }
44             if(sum == n) {
45                 int j;
46                 for(j = 0;j < 4;j++) {
47                     if(arr[j] != arr[5-j])
48                         break;
49                 }
50                 if(j == 4) {
51                     for(int k = 0;k < 6 ;k++) {
52                         System.out.print(arr[k]);
53                     }
54                     System.out.println();
55                 }
56             }
57         }
58     }
59 }

[藍橋] 基礎練習 特殊回文數