0
点赞
收藏
分享

微信扫一扫

【九度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 日



举报

相关推荐

0 条评论