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 |