輸入爲一行,M(32位整數)、N(2 ≤ N ≤ 16),以空格隔開。
爲每一個測試實例輸出轉換後的數,每一個輸出佔一行。若是N大於9,則對應的數字規則參考16進制(好比,10用A表示,等等)
1 import java.util.Enumeration; 2 import java.util.HashMap; 3 import java.util.Map; 4 import java.util.Scanner; 5 import java.util.Stack; 6 public class Main { 7 public static void main(String[] args) { 8 Scanner scanner = new Scanner(System.in); 9 int M = scanner.nextInt(); 10 int N = scanner.nextInt(); 11 if (N > 0) { 12 convert(M, N); 13 } 14 } 15 public static void convert(int m, int n) { 16 Map<Integer, String> map = new HashMap<Integer, String>(); 17 map.put(10, "A"); 18 map.put(11, "B"); 19 map.put(12, "C"); 20 map.put(13, "D"); 21 map.put(14, "E"); 22 map.put(15, "F"); 23 if (n == 10) { 24 System.out.println(m); 25 return; 26 } 27 Stack list = new Stack(); 28 while (m > 0) { 29 int yushu = m % n; 30 if (n < 10) { 31 list.push(yushu); 32 } else { 33 list.push((yushu > 9 ? map.get(yushu) : yushu)); 34 } 35 m = m / n; 36 } 37 while (m<0){ 38 m=Math.abs(m); 39 int yushu = m % n; 40 if (n < 10) { 41 list.push(yushu); 42 } else { 43 list.push((yushu > 9 ? map.get(yushu) : yushu)); 44 } 45 m = -(m / n); 46 if(m==0) 47 {list.push("-"); 48 } 49 } 50 if (!list.isEmpty()) { 51 Enumeration items = list.elements(); 52 while (items.hasMoreElements()) { 53 System.out.print(list.pop()); 54 55 } 56 } 57 } 58 59 }
運行時間:43msjava
佔用內存:9284k測試