回文数字
题目描述:
观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。
本题要求你找到一些5位或6位的十进制数字。满足如下要求:
该数字的各个数位之和等于输入的整数。
输入格式:
一个正整数 n (10<n<100), 表示要求满足的数位和。
输出格式:
若干行,每行包含一个满足要求的5位或6位整数。
数字按从小到大的顺序排列。
如果没有满足条件的,输出:-1
输入样例1:
44
输出样例:
99899
499994
589985
598895
679976
688886
697796
769967
778877
787787
796697
859958
868868
877778
886688
895598
949949
958859
967769
976679
985589
994499
输入样例2:
60
输出样例2:
-1
思路:
这道题没去纠结什么方法,直接暴力遍历找出即可。用flag做标示器,找到将flag记为1,没找到记为0,最后flag为0则输出-1。
下面附上代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
import javax.print.attribute.Size2DSyntax;
import javax.security.auth.x500.X500Principal;
import javax.swing.text.Highlighter;
import org.omg.PortableServer.ID_ASSIGNMENT_POLICY_ID;
public class Main{
public static void main(String args[]) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s[]=br.readLine().split("\\s+");
int n=Integer.parseInt(s[0]);
int flag=0;
for (int i = 10000; i < 100000; i++) {
int a=i%10;
int b=i/10%10;
int c=i/100%10;
int d=i/1000%10;
int e=i/10000;
if(a==e&&b==d&&a+b+c+d+e==n)
{
System.out.println(i);
flag=1;
}
}
for (int i = 100000; i < 1000000; i++) {
int a=i%10;
int b=i/10%10;
int c=i/100%10;
int d=i/1000%10;
int e=i/10000%10;
int f=i/100000;
if(a==f&&b==e&&c==d&&a+b+c+d+e+f==n)
{
System.out.println(i);
flag=1;
}
}
if(flag==0)
System.out.println(-1);
}
}