• 考研机试 56.进制转换


    时间:2021/03/08

    一.题目描述

    求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。     不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F)。

    输入描述

    输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。
    a,b是十进制整数,2 =< a,b <= 16。 数据可能存在包含前导零的情况。

    输出描述

    可能有多组测试数据,对于每组数据,输出包含一行,该行有一个整数为转换后的b进制数。
    输出时字母符号全部用大写表示,即(0,1,...,9,A,B,...,F)。

    题目链接

    https://www.nowcoder.com/practice/8ef02ef8571b417d8c311a87861f7a03?

    tpId=40&tqId=21387&rp=1&ru=%2Fta%2Fkaoyan&qru=%2Fta%2Fkaoyan%2Fquestion-ranking&tab=answerKey

    二.算法

    题解

    虽然说题目中说所给的整数在long类型的范围内,但是为了偷懒,这里使用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()){
                
                //读取输入数据
                int a = in.nextInt();
                BigInteger num = new BigInteger(in.next(), a);
                int b = in.nextInt();
                
                //进行进制转换并输出
                System.out.println((num.toString(b)).toUpperCase());
            }
        }
    }
    努力,向上,自律
  • 相关阅读:
    为Android编译bash
    编译toybox
    RGB信仰灯
    如何用Fiddler抓BlueStacks的HTTPS包
    Adobe Acrobat快捷方式
    [MS-SHLLINK]: Shell Link (.LNK) Binary File Format
    BZOJ 3993 星际战争
    BZOJ 3996 线性代数
    BZOJ 1797 最小割
    BZOJ 2726 任务安排
  • 原文地址:https://www.cnblogs.com/machi12/p/14499977.html
Copyright © 2020-2023  润新知