一、题目描述
给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
输入描述:
输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。
输出描述:
为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)
示例1:
输入
7 2
输出
111题目链接:
二、解题思路
使用短除法进行进制转换,对应的数字规则参考16进制,十进制数为负数时在前面加上负号。
三、代码
import java.util.Scanner;
public class Main{
public static void convertSystem(int m,int n){
if(m==0){
System.out.print(0);
}
String[] num=new String[]{"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"}; //对应的数字规则参考16进制
StringBuffer ret=new StringBuffer();
boolean bool=false; //判断是否为负数
if(m<0){
m=-m;
bool=true;
}
int quotient=m; //商
int remainder=0; //余数
while(quotient!=0){ // 短除法
remainder=quotient%n;
quotient=quotient/n;
ret.append(num[remainder]);
}
if(bool){ //为负数时,在前面加上负号
ret.append("-");
}
System.out.print(ret.reverse().toString());
}
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
int m=scanner.nextInt();
int n=scanner.nextInt();
convertSystem(m,n);
}
}