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