首页 > 学院 > 开发设计 > 正文

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

2019-11-06 06:30:47
字体:
来源:转载
供稿:网友

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

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


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

题目描述:

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

输入:

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

输出:

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

样例输入:

0138

样例输出:

01111000

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 日


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表