Whistle


私信TA

用户名:uq_58155627477

访问量:1168

签 名:

等  级
排  名 29010
经  验 527
参赛次数 1
文章发表 3
年  龄 0
在职情况 学生
学  校 SDUST
专  业 计算机科学与技术

  自我简介:

解题思路:
回文数有着对称的特点,而且题目要求只判断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 人评分

  评论区

  • «
  • »