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

posted @ 2017-03-08 21:38  负雪明烛  阅读(33)  评论(0编辑  收藏  举报