标签(空格分隔): 九度OJ
原题地址:http://ac.jobdu.com/PRoblem.php?pid=1138
将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。
多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30bits的整数)
每行输出对应的二进制数。
本身二进制转换并不是很难的题目,但是本题要求大数,这就很难了。用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)); } }}2017 年 3 月 6 日
新闻热点
疑难解答