观察数字:1232112321,123321123321 都有一个共同的特征,就是无论从左到右读还是从右向左读,都是相同的。这样的数字叫做 回文数字。
现在要从 55 位或 66 位的十进制数字中找出各个数位之和等于 nn 的回文数字。
输入格式
输入一个整数 n(10≤n≤100)。
输出格式
输出所有各个数位之和等于 n的 55 位和 66 位整数,每个数字占一行,数字按从小到大的顺序排列。如果没有满足条件的数字,则输出 -1−1。
样例输入
48
样例输出
699996
789987
798897
879978
888888
897798
969969
978879
987789
现在要从 55 位或 66 位的十进制数字中找出各个数位之和等于 nn 的回文数字。
输入格式
输入一个整数 n(10≤n≤100)。
输出格式
输出所有各个数位之和等于 n的 55 位和 66 位整数,每个数字占一行,数字按从小到大的顺序排列。如果没有满足条件的数字,则输出 -1−1。
样例输入
48
样例输出
699996
789987
798897
879978
888888
897798
969969
978879
987789
996699
public static void main(String args[]){
String num = null;
int n=0;
int sum=0;
boolean flag=true;
boolean s=true;
Scanner sc =new Scanner(System.in);
n = sc.nextInt();
for(int j=10000;j<=999999;j++){
flag=true;
num=String.valueOf(j);
//首先判断是否是回文数,采用字符串的形式进行比对
for(int i=0;i<num.length()/2;i++){
if(!String.valueOf(num.charAt(i)).equals(String.valueOf(num.charAt(num.length()-i-1)))){
flag=false;
break;
}
}
int a=j;
sum=0;
//各个位数求和
while(a!=0){
sum+=a%10;
a=a/10;
}
if(sum!=n){
flag=false;
}
if(flag){
s=false;
System.out.println(j);
}
}
if(s){
System.out.println("-1");
}
}
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int sum = 0;
int aa=0;
for(int b=10000;b<=999999;b++){
if(num(b)){
String c=String.valueOf(b);
char[] d=c.toCharArray();
for(int x=0;x<d.length;x++){
sum+=(int)d[x]-48;
}
if(sum==a){
System.out.println(b);
aa++;
}
sum=0;
}
}
if(aa==0){
System.out.println(-1);
}
}
public static boolean num(int b){
String c=String.valueOf(b);
char[] d=c.toCharArray();
for(int a=0;a<d.length/2;a++){
if(d[a]!=d[d.length-1-a]){
return false;
}
}
return true;
}