1.题目描述:
将非负十进制整数n转换成b进制。(其中b=2~16)
2.解题思路:
给定一个数n,通过每次求余b,依次得到转换为对应b进制的逆序序列。
(1)当b<=10时,按照上述说法依次执行,用n求余b,存放在字符数组中,
然后n除以b,直到n为0.
(2)当b>10时,若n求余b大于9,要表示成A,B,C,D,E,则在这种情况下, 对于求余的结果做’A’+(mod%10)的处理。比如mod=11,得到此次的结果为
‘A’+1,为B.
3.代码展示:
import java.util.Scanner;
public class Two {
// 非递归实现
public static String fun1(int n){
int [] loc=new int[31];
for (int i=0;i<31;i++){
if ((n&(1<<i))!=0){
loc[i]=1;
}
}
StringBuilder re=new StringBuilder("");
for (int i=0;i<31;i++){
if (loc[i]==1){
String t="2(";
if (i<2){
t+=i;
}else {
t+=fun1(i);
}
re.append(t+")+");
}
}
return re.toString().substring(0,re.length()-1);
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
String re=fun1(n);
System.out.println(re.replaceAll("\\(1\\)",""));
}
}