解题思路:
回文数有着对称的特点,而且题目要求只判断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语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:543 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:591 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:580 |
1908题解浏览:680 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:742 |
C二级辅导-分段函数 (C语言代码)浏览:659 |
淘淘的名单 (C语言代码)浏览:1309 |
母牛的故事 (C语言代码)浏览:625 |
A+B for Input-Output Practice (III) (C语言代码)浏览:455 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:1261 |