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]);
			}
		}
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章