【九度OJ】题目1208:10进制 VS 2进制 解题报告
【九度OJ】题目1208:10进制 VS 2进制 解题报告
标签(空格分隔): 九度OJ
原题地址:http://ac.jobdu.com/problem.php?pid=1208
题目描述:
对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数B,我们乘B为A的二进制逆序数。
例如对于十进制数173,它的二进制形式为10101101,逆序排列得到10110101,其十进制数为181,181即为173的二进制逆序数。
输入:
一个1000位(即10^999)以内的十进制数。。
输出:
输入的十进制数的二进制逆序数。
样例输入:
173
样例输出:
181
Ways
如果一个用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);
}
}
Date
2017 年 3 月 8 日