試題-基礎練習-十六進制轉八進制
題目
試題 基礎練習 十六進制轉八進制
資源限制
時間限制:1.0s 內存限制:512.0MB
問題描述
給定n個十六進制正整數,輸出它們對應的八進制數。
輸入格式
輸入的第一行為一個正整數n (1<=n<=10)。
接下來n行,每行一個由09、大寫字母AF組成的字符串,表示要轉換的十六進制正整數,每個十六進制數長度不超過100000。
輸出格式
輸出n行,每行為輸入對應的八進制正整數。
【注意】
輸入的十六進制數不會有前導0,比如012A。
輸出的八進制數也不能有前導0。
樣例輸入
2
39
123ABC
樣例輸出
71
4435274
【提示】
先將十六進制數轉換成某進制數,再由某進制數轉換成八進制。
知識點
1.由于是10萬位的16進制數,范圍太大,所以無論是使用常規的二進制還是十進制轉換都會超出范圍
2.使用字符串類型的集合,通過大數去轉換為8進制
代碼
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Scanner;public class d2_3 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();//使用集合去存儲,因為有ABC等,所以使用StringArrayList<String> list = new ArrayList();for (int i = 0; i < n; i++) {//使用16進制的大數輸入,并轉換為8進制String s = new BigInteger(scanner.next(), 16).toString(8);list.add(s);}for (String l:list) {System.out.println(l);}scanner.close();}
}