蓝桥杯校赛题目:回文数字

观察数字: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 }

 

posted @ 2016-12-11 18:58  cheney-yang  阅读(641)  评论(0编辑  收藏  举报