考研机试 1.进制转换
时间:2021/02/21
一.题目描述
将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。
输入描述
多组数据,每行为一个长度不超过30位的十进制非负整数。(注意是10进制数字的个数可能有30个,而非30bits的整数)
输出描述
每行输出对应的二进制数。
题目链接
二.算法
题解
在java中integer类型的范围为-231-(231-1),而题目中说十进制数字的位数最大时30位(并不是二进制数字的位数),所以题目中最大的输入可能会超过integer的最大范围。为了避免越界情况的产生,我们使用了BigInteger类型来存放输入值。并通过BigInteger的toString方法将其转化为二进制。
代码
import java.util.Scanner; import java.math.BigInteger; public class Main{ public static void main(String[] args){ Scanner in = new Scanner(System.in); while(in.hasNext()){ String s = in.nextLine(); BigInteger bi = new BigInteger(s, 10); System.out.println(bi.toString(2)); } } }
努力,向上,自律