标签(空格分隔): 九度OJ
原题地址:http://ac.jobdu.com/problem.php?pid=1208
对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数B,我们乘B为A的二进制逆序数。 例如对于十进制数173,它的二进制形式为10101101,逆序排列得到10110101,其十进制数为181,181即为173的二进制逆序数。
一个1000位(即10^999)以内的十进制数。。
输入的十进制数的二进制逆序数。
如果一个用C++做这个题的人看到我的解法估计要吐血了。。Java BigInteger大法好!
首先把输入的十进制字符串转换成二进制的,然后利用StringBuilder的reverse()方法把二进制字符串进行翻转,然后再把翻转过的字符串转换为10进制。好简单!
import java.util.*; import java.math.*; public class Main{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { String n = scanner.nextLine(); StringBuilder answer = new StringBuilder(change(n, 10, 2)); System.out.println(change(answer.reverse().toString(), 2, 10)); } } private static String change(String num, int from, int to) { return new BigInteger(num, from).toString(to); } }2017 年 3 月 8 日