试题 基础练习 特殊回文数
[问题描述]
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
[输入格式]
输入一行,包含一个正整数n。
[输出格式]
按从小到大的顺序输出满足条件的整数,每个整数占一行。
代码如下:
package lanqiaolianxitiBasic;
import java.util.Scanner;
public class SpecialPalindromicNumber {
//以下方法是先写一个循环求出满足条件的五位数,再写一个循环求出满足条件的六位数
//循环里面将整数转化为字符串再对字符串,对字符串的每个位置比较判断,若符合回文串,则判断各个位置相加是否为N,然后将正确的数输出
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 10000; i < 100000; i++) { //求出满足条件的五位数
String str = i + "";
if (str.charAt(0) == str.charAt(4) && str.charAt(1) == str.charAt(3)) { //将字符串的第1位和第5位,第2位和第4位分别比较是否相等,不用比较第3位
int sum = (str.charAt(0) -'0') + (str.charAt(1) -'0') + (str.charAt(2) -'0') + (str.charAt(3) -'0' + (str.charAt(4) -'0')); //将每个位置的字符转换为整型并相加
if (sum == n) { //判断各位数字之和是否为n
System.out.println(i);
}
}
}
for (int i = 100000; i < 1000000; i++) { //求出满足条件的六位数,方法同上
String str = i + "";
if (str.charAt(0) == str.charAt(5) && str.charAt(1) == str.charAt(4) && str.charAt(2) == str.charAt(3)) {
int sum = (str.charAt(0) -'0') + (str.charAt(1) -'0') + (str.charAt(2) -'0') + (str.charAt(3) -'0' + (str.charAt(4) -'0') + (str.charAt(5) -'0'));
if (sum == n) {
System.out.println(i);
}
}
}
}
}