问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899
数据规模和约定
1<=n<=54。
解题思路:需要使用枚举和判断的思路去解题,5位到6位数起止为10000~999999,所以需要在这里面去查找。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
sc.close();
ArrayList<Integer> ar = new ArrayList<>();
// 写三个for循环嵌套,相当于从10000~999999
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
for (int k = 0; k < 10; k++) {
if (2 * i + 2 * j + k == num) {
int temp = i * 10000 + j * 1000 + k * 100 + j * 10 + i;
if (temp > 10000)//五位数的话,应该屏蔽掉首位为零的情况,例如00200
ar.add(temp);
}
if (2 * i + 2 * j + 2 * k == num) {
int temp = i * 100000 + j * 10000 + k * 1000 + k * 100 + j * 10 + i;
if (temp > 100000) {//六位数的话,也应该屏蔽首位为零的情况,例如010010
ar.add(temp);
}
}
}
}
}
Collections.sort(ar);// 对结果进行一个排序
for (int i = 0; i < ar.size(); i++) {
System.out.println(ar.get(i));// 将结果输出
}
}
}