<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                問題描述 給定n個十六進制正整數,輸出它們對應的八進制數。 輸入格式 輸入的第一行為一個正整數n (1<=n<=10)。 接下來n行,每行一個由0~9、大寫字母A~F組成的字符串,表示要轉換的十六進制正整數,每個十六進制數長度不超過100000。 輸出格式 輸出n行,每行為輸入對應的八進制正整數。 【注意】 輸入的十六進制數不會有前導0,比如012A。 輸出的八進制數也不能有前導0。 樣例輸入   2   39   123ABC 樣例輸出   71   4435274 【提示】 先將十六進制數轉換成二進制數,再由二進制數轉換成八進制。    難點就是數值太大了,10w個F啊, 思路就是換成二進制再換成八進制,用java大數類一直超時,所以不能用大數方法 ### 先來超時的方法 ~~~ import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); int n = input.nextInt(); String[] arr = new String[n]; for (int i = 0; i < n; i++) { String temp = input.next(); BigInteger num = new BigInteger(temp,16); arr[i] = num.toString(8).toUpperCase(); } for (String string : arr) { System.out.println(string); } } } ~~~ ### 下面是正確的方法 ~~~ package com.day7; import java.util.Scanner; public class Main { //定義16進制需要的二進制碼 static String[] hex = {"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"}; public static void main(String[] args) { Scanner input = new Scanner(System.in); int n = input.nextInt(); String[] arrs = new String[n]; for (int i = 0; i < n; i++) { arrs[i] = input.next(); } for (int i = 0; i < arrs.length; i++) { translateToOct(translateToBin(arrs[i])); } } //把得到的二進制串轉換成八進制 private static void translateToOct(StringBuilder builder){ StringBuilder builder2 = new StringBuilder(); for (int i = 0; i < builder.length()-1; i = i+3) { switch (builder.substring(i, i+3)) { case "000": builder2.append("0"); break; case "001": builder2.append("1"); break; case "010": builder2.append("2"); break; case "011": builder2.append("3"); break; case "100": builder2.append("4"); break; case "101": builder2.append("5"); break; case "110": builder2.append("6"); break; case "111": builder2.append("7"); break; } } if (builder2.charAt(0) == '0') { builder2.deleteCharAt(0); } System.out.println(builder2.toString()); } //把輸入的字符串變成二進制串 private static StringBuilder translateToBin(String str){ StringBuilder builder = new StringBuilder(); //轉換后補0湊成3的倍數 if ((str.length()*4)%3 != 0) { if ((str.length()*4)%3 == 1) { builder.append("00"); }else { builder.append("0"); } } //接下來開始轉換 for (int i = 0; i < str.length(); i++) { switch (str.charAt(i)) { case '0': builder.append(hex[0]); break; case '1': builder.append(hex[1]); break; case '2': builder.append(hex[2]); break; case '3': builder.append(hex[3]); break; case '4': builder.append(hex[4]); break; case '5': builder.append(hex[5]); break; case '6': builder.append(hex[6]); break; case '7': builder.append(hex[7]); break; case '8': builder.append(hex[8]); break; case '9': builder.append(hex[9]); break; case 'A': builder.append(hex[10]); break; case 'B': builder.append(hex[11]); break; case 'C': builder.append(hex[12]); break; case 'D': builder.append(hex[13]); break; case 'E': builder.append(hex[14]); break; case 'F': builder.append(hex[15]); break; } } return builder; } } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看