D进制的A + B

《D进制的A + B》
解这道题的关键是,要知道十进制转任意进制的方法:除D取余的倒排法(D代表进制数)
举个例子:
76 ——>二进制

     76  /  2      ...    0
=    38  /  2      ...    0
=    19  /  2      ...    1
=    9   /  2      ...    1
=    4   /  2      ...    0
=    2   /  2      ...    0
=    1   /  2      ...    1
76(10)  =   1001100(2)

76——>八进制

     76  /  8      ...    4
=    9   /  8      ...    1
=    1   /  8      ...    1
76(10)  =   114(8)

76——>十六进制

     76  / 16      ...    12
=    4   / 16      ...    4    
76(10)  =   4C(16)

这里我用递归的方法,进行求解。需要注意的是,递归之后,要回溯过来。把原来的除D的之前的状态,再转换过来。
注意:
需要加上余数,才能得到上次状态的值,也即没有除D之前的值。
下面看代码:

import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		int [] count = new int [10];
		int i;
		String data = new Scanner(System.in).nextLine();
	    char num [] = data.toCharArray();
	    for(i = 0; i < num.length; i++) {
	    	count[(int)num[i] - 48]++;
	    }
		for(i = 0; i < 10; i++) {
			if(count[i] != 0) {
				System.out.println(i + ":" + count[i]);
			}
		}
	}
}
点赞