01、回文十进制数

2020-07-23  本文已影响0人  神奇作手

1.描述

如果把某个数的各个数字按相反的 顺序排列,得到的数和原来的数相同,则 这个数就是“回文数”。譬如123454321 就是一个回文数。

2.问题

求用十进制、二进制、八进制表示都是回 文数的所有数字中,大于十进制数 10 的最小的数值。

例)9(十进制数)=1001(二进制数)=11(八进制数)
※ 本例中的十进制数9小于10,因此不符合 要求。

3.思路

  因为是二进制的回文数,所以如果最低位是0,那么相应地最高位 也是 0。但是,以 0 开头肯定是不恰当的,由此可知最低位为 1。 如果用二进制表示时最低位为1,那这个数一定是奇数,因此只考 虑奇数的情况就可以。接下来可以简单地编写程序,从10 的下一个数 字 11 开始,按顺序搜索。

4.java代码

public void test(){
        int num = 11;
        while (true){
            String numStr10 = Integer.toString(num);//10进制
            String numStr10Rev = new StringBuffer(numStr10).reverse().toString();//10进制反转数
            String numStr8 = Integer.toOctalString(num);//8进制
            String numStr8Rev = new StringBuffer(numStr8).reverse().toString();//8进制反转数
            String numStr2 = Integer.toBinaryString(num);//2进制
            String numStr2Rev = new StringBuffer(numStr2).reverse().toString();//2进制反转数
            if ( numStr10.equals(numStr10Rev)&&numStr8.equals(numStr8Rev)&&numStr2.equals(numStr2Rev)
            ){
                System.out.println(num);
                break;
            }
            num+=2;
        }
    }

结果:585
二进制数是:1001001001, 八进制数是:1111

注:各编程语言中进制转换的接口

语言 二进制 八进制 十进制
Java toBinaryString toOctalString toHexString
JavaScript toString(2) toString(8) toString(16)
Python bin oct hex
上一篇 下一篇

猜你喜欢

热点阅读