藍橋杯:進位制轉換(java)
阿新 • • 發佈:2018-12-14
package lanqiaobei; import java.util.HashMap; import java.util.Scanner; import java.util.Stack; /* 練習題:進位制轉換 輸入一個十進位制數 N,將它轉換成 R 進位制數輸出。在 10≤R≤16的情況下,用'A'表示 10,用'B'表示 11, 用'C'表示 12,用'D'表示 13,用'E'表示 14,用'F'表示 15。 輸入格式 輸入包含兩個整數 N(N≤10000) 和 R(2≤R≤16)。 注意,N 有可能是負整數。 輸出格式 輸出一行,表示轉換後的數。 樣例輸入 23 12 樣例輸出 1B */ public class Njinzhishu { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int r=sc.nextInt(); Stack<Character> s=new Stack<>(); HashMap<Integer,Character> juge=new HashMap<>(); juge.put(10,'A'); juge.put(11,'B'); juge.put(12,'C'); juge.put(13,'D'); juge.put(14,'E'); juge.put(15,'F'); while (n>0){ int re=n%r; n/=r; if (re>=10){ s.push(juge.get(re)); }else { s.push((char)(re+48)); } } /*if (n>=10){ s.push(juge.get(n)); }else { s.push((char)(n+48)); } */ while (!s.isEmpty()){ System.out.print(s.pop()); } } }