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

时间:2024-10-29 20:06:56

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