蓝桥杯校赛题目:回文数字
观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。
本题要求你找到一些5位或6位的十进制数字。满足如下要求:
该数字的各个数位之和等于输入的整数。
【输入格式】
一个正整数 n (10<n<100), 表示要求满足的数位和。
【输出格式】
若干行,每行包含一个满足要求的5位或6位整数。
数字按从小到大的顺序排列。
如果没有满足条件的,输出:-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
【资源约定】
峰值内存消耗 < 64M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。
1 import java.util.Scanner; 2 3 4 public class Test { 5 public static int count(String s){//用到mian方法里面的String类型的s 6 7 int sum = 0; 8 for(int i = 0;i < s.length();i++){ 9 sum += (s.charAt(i) - 48); // 把0-9的字符分别转换成数字0-9的数字 10 } 11 return sum; 12 } 13 14 public static void main(String args[]){ 15 Scanner sc = new Scanner(System.in); 16 int n = sc.nextInt(); 17 String s; 18 19 for(int i = 10000;i <= 999999; i++){ 20 s = "" + i; 21 StringBuffer sb = new StringBuffer(s); //StringBuffer方法最典型的就是把字符串的字符倒序排列 22 if(s.equals(sb.reverse().toString())&&count(s) == n){ 23 System.out.println(s); 24 } 25 } 26 } 27 }