【九度OJ】题目1208:10进制 VS 2进制 解题报告

    xiaoxiao2021-03-25  175

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

    转载请注明原文地址: https://ju.6miu.com/read-6951.html

    最新回复(0)