【九度OJ】题目1138:进制转换 解题报告

【九度OJ】题目1138:进制转换 解题报告

标签(空格分隔): 九度OJ


原题地址:http://ac.jobdu.com/problem.php?pid=1138

题目描述:

将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。

输入:

多组数据,每行为一个长度不超过30位的十进制非负整数。
(注意是10进制数字的个数可能有30个,而非30bits的整数)

输出:

每行输出对应的二进制数。

样例输入:

0
1
3
8

样例输出:

0
1
11
1000

Ways

本身二进制转换并不是很难的题目,但是本题要求大数,这就很难了。用C++是在很麻烦,可我是Java狗啊!果断用Java的BigInteger类啊!

Java内置的进制转换:

十进制转成十六进制Integer.toHexString(int i)
十进制转成八进制Integer.toOctalString(int i)
十进制转成二进制Integer.toBinaryString(int i)
十六进制转成十进制Integer.valueOf(“FFFF”,16).toString()
八进制转成十进制Integer.valueOf(“376”,8).toString()
二进制转成十进制Integer.valueOf(“0101”,2).toString()

用change函数实现任意进制的转换,特别好用,墙裂推荐~

private static String change(String num, int from, int to) {
    return new BigInteger(num, from).toString(to);
}

对于这个题,让我对BigInteger类有了更深的认识!业界良心!

本题的代码如下,会不会给人一种作弊的感觉?

import java.util.*;
import java.math.*;

public class Main{
    public static void main(String []args){
        Scanner scanner =new Scanner(System.in);
        while(scanner.hasNext()){
            System.out.println(scanner.nextBigInteger().toString(2));
        }
    }
}

Date

2017 年 3 月 6 日

posted @ 2017-03-06 19:25  负雪明烛  阅读(42)  评论(0编辑  收藏  举报