进制转换

输入一个十进制数 NNN,将它转换成 RRR 进制数输出。在 10≤R≤1610 \le R \le 1610R16 的情况下,用'A'表示 101010,用'B'表示 111111,用'B'表示 111111,用'C'表示 121212,用'D'表示 131313,用'E'表示 141414,用'F'表示 151515。

输入格式

输入包含两个整数 N(N≤10000)N(N \le 10000)N(N10000) 和 R(2≤R≤16)R(2 \le R \le 16)R(2R16)。

注意,NNN 有可能是负整数。

输出格式

输出一行,表示转换后的数。

样例输入

23 12

样例输出

1B
package 计蒜客;

import java.util.Scanner;

public class 进制转换 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scan=new Scanner(System.in);
        int n=scan.nextInt();
        int r=scan.nextInt();
        if(n==0){
            System.out.println(0);
        }else if(n<0){
            System.out.println("-"+fun(-n,r));
        }
        else{
            System.out.println(fun(n,r));
        }
    }
    public static String fun(int n,int r){
        StringBuffer sb=new StringBuffer();
        while(n!=0){
            if(n%r<10){
                sb.append(n%r);
            }else{
                sb.append(change(n%r));
            }
            n/=r;
        }
        return sb.reverse().toString();
    }
    public static String change(int n){
        switch(n){
        case 10:
            return "A";
        case 11:
            return "B";
        case 12:
            return "C";
        case 13:
            return "D";
        case 14:
            return "E";
        case 15:
            return "F";
        }
        return null;
    }
}

 

posted @ 2018-03-11 19:47  henu小白  阅读(370)  评论(0编辑  收藏  举报