/**
* 进制转换
* @param M int整型 给定整数
* @param N int整型 转换到的进制
* @return string字符串
*/
public String solve (int M, int N) {
boolean positive = true;
if(M < 0) {
positive = false;
M = Math.abs(M);
}
String[] chars = {"1", "2", "3", "4", "5", "6", "7","8", "9","10", "A", "B","C", "D","E","F"};
// write code here
StringBuilder buffer = new StringBuilder("");
if(N == 10) {
return String.valueOf(M);
}
LinkedHashMap<Integer, Integer> map = new LinkedHashMap<>();
int max = 0;
while(M > 0) {
int num = 0;
int cur = M;
while(cur >= Math.pow(N, num)) {
num ++;
}
if(num > 1) {
int d = M / (int) Math.pow(N, num - 1);
M = M - d * ((int) Math.pow(N, num - 1));
map.put(num - 1, d);
max = Math.max(max, num - 1);
} else {
map.put(num - 1, M);
break;
}
}
/**
* key: 位置
* value: 放的数据
*/
if(!positive) {
buffer.append("-");
}
for(int i = max; i >= 0; i --) {
Integer integer = map.get(i);
if(integer != null) {
if(integer > 10) {
buffer.append(chars[integer]);
} else {
buffer.append(integer);
}
} else {
buffer.append("0");
}
}
return buffer.toString();
}