问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899数据规模和约定
1<=n<=54。
解题思路:
本题依旧可以用取余和套用for循环解出来
方法一:取余
import java.util.Scanner;//导入scanner包
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();//获取用户输入的整数n
for (int i=10000;i<1000000;i++){
if (i<100000){//五位十进制数
int a=i/10000;//万位数
int b=i/1000%10;//千位数
int c=i/100%10;//百位数
int d=i/10%10;//十位数
int e=i%10;//个位数
if (a==e&&b==d&&a+b+c+d+e==n){//如果满足回文数条件
System.out.println(i);//输出五位十进制数
}
}else {//六位十进制数
int a=i/100000;//十万位数
int b=i/10000%10;//万位数
int c=i/1000%10;//千位数
int d=i/100%10;//百位数
int e=i/10%10;//十位数
int f=i%10;//个位数
if (a==f&&b==e&&c==d&&a+b+c+d+e+f==n){//如果满足回文数条件
System.out.println(i);//输出六位十进制数
}
}
}
}
}
方法二:套用for循环
import java.util.Scanner;//导入scanner包
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();//获取用户输入的整数n
for (int a = 1; a < 10; a++) {//万位数
for (int b = 0; b < 10; b++) {//千位数
for (int c = 0; c < 10; c++) {//百位数
for (int d = 0; d < 10; d++) {//十位数
for (int e = 0; e < 10; e++) {//个位数
//如果满足回文数条件
if (a == e && b == d && a + b + c + d + e == n) {
//定义五位十进制回文数i的值
int i=a*10000+b*1000+c*100+d*10+e;
System.out.println(i);//输出五位十进制回文数i
}
}
}
}
}
}
for (int a=1;a<10;a++){//十万位数
for (int b=0;b<10;b++){//万位数
for (int c=0;c<10;c++){//千位数
for (int d=0;d<10;d++){//百位数
for (int e=0;e<10;e++){//十位数
for (int f=0;f<10;f++){//个位数
//如果满足六位十进制回文数i的值
if (a==f&&b==e&&c==d&&a+b+c+d+e+f==n){
//定义六位回文数i的值
int i =a*100000+b*10000+c*1000+d*100+e*10+f;
System.out.println(i);//输出六位十进制回文数i
}
}
}
}
}
}
}
}
}