原题链接:蓝桥杯历届试题-回文数字
解题思路:
回文数有着对称的特点,而且题目要求只判断5位和6位的十进制数字,所以只看待求数的前三位即可(时间复杂度为常数阶),Java对字符串的处理非常拿手,求解十分方便。
具体求解思路请见代码注释
注意事项:
千万别忘了没有找到要输出-1;
参考代码:
import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int n; n = sc.nextInt(); List l = new ArrayList();//存放所有的符合条件的回文数 for(int i = 1; i<=9;++i) {//第一位数(从左到右) 不为0 要从1-9 里选 for (int j = 0; j<= 9;++j) {//第二位数(从左到右) 从0-9 里选 for (int k = 0;k <= 9;++k) {//第三位数(从左到右) 从0-9 里选 if ((i+j)*2+k == n) {//判断该五位回文数 是否符合条件 String s = i+""+j+""+k+""+j+""+i; //先用字符串表示出来 l.add(Integer.parseInt(s));//转化为整形后添加进List } if((i+j+k)*2 == n) {//判断该六位回文数 是否符合条件 String s = i+""+j+""+k+""+k+""+j+""+i; l.add(Integer.parseInt(s)); } } } } if(l.size() == 0) {//判断有没有找到 没有输出-1 System.out.println(-1); return ; } Collections.sort(l);//给所有符合条件的数从小到大排序 for (int i = 0; i < l.size();++i)System.out.println(l.get(i));//输出 } }
0.0分
3 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复