再刷PAT系列~外星人的语言

题目描述
nowcoder费了很大劲,终于和地外文明联系上。我们地球人通常有10根手指,因此我们习惯用10进制的数,而外星人的手指有16跟、8根等不等的数目,因此他们使用与我们不同的进制。为了方便沟通,需要你开发一款工具,把地球人的10进制转换成外星人的R进制形式。

输入描述:
输入有多行。

每行包括两个正整数n和R,其中2≤R≤16。

输入直到文件结束为止。

输出描述:
对于每个用例,输出n对应的R进制形式。

超过10进制的数,10用A表示、11用B表示,依次类推。

输入例子:

1989 2
1119 16

输出例子:

11111000101
45F

分析:进制转换,短除法即可实现,关键是输入输出的考察
编码实现:

import java.util.ArrayList;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()){
            int n = scanner.nextInt();
            int r = scanner.nextInt();
            binaryTrans(n,r);
        }
    }
    private static void binaryTrans(int n, int r) {
        String []table ={"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
        ArrayList<String> list = new ArrayList<String>();
        int shang = -1;
        int yushu = -1;
        while(shang!=0){
            shang = n/r;
            yushu = n%r;
            n = shang;
            list.add(table[yushu]);
        }
        for(int i=list.size()-1;i>=0;i--){
            System.out.print(list.get(i));
        }
        System.out.println();
    }

}

猜你喜欢

转载自blog.csdn.net/xiaozhouchou/article/details/80893364