问题描述
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=10001;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 = 100001;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 }