基礎練習 十六進制轉八進制
時間限制:1.0s 內存限制:512.0MB
問題描述
給定n個十六進制正整數,輸出它們對應的八進制數。
輸入格式
輸入的第一行爲一個正整數n (1<=n<=10)。
接下來n行,每行一個由0~9、大寫字母A~F組成的字符串,表示要轉換的十六進制正整數,每個十六進制數長度不超過100000。
輸出格式
輸出n行,每行爲輸入對應的八進制正整數。
【注意】
輸入的十六進制數不會有前導0,比如012A。
輸出的八進制數也不能有前導0。
樣例輸入
2
39
123ABC
樣例輸出
71
4435274
【提示】
先將十六進制數轉換成某進制數,再由某進制數轉換成八進制。
public class _5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
transform();
}
//首先,使用Java中封裝的方法先將十六進制轉換爲十進制,再將十進制轉換爲八進制
public static void transform() {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); //獲取鍵盤的輸入
String[] arry = new String[10];
if(n>=1 && n<= 10) {
for(int i=0;i<n;i++) {
String number = sc.next(); //next() 查找並返回來自此掃描器的下一個完整標記
if(number.length() < 100000) {
arry[i] = Integer.toOctalString(Integer.valueOf(number,16));
//System.out.println(Integer.valueOf(number,16));//將十六進制轉變成十進制
//java.lang.Integer.toOctalString() 方法返回一個整數參數
//的作爲以8爲基數下列字符的無符號整數的字符串表示形式作爲八進制數字:01234567
//String result = Integer.toBinaryString(i);//將十進制轉換成二進制
}
}
for(int i=0;i<n;i++) {
System.out.println(arry[i]);
}
}
}
}
題目:二進制求和
給定兩個二進制字符串,返回他們的和(用二進制表示)。
輸入爲非空字符串且只包含數字 1 和 0。
示例 1:
輸入: a = "11", b = "1"
輸出: "100"
示例 2:
輸入: a = "1010", b = "1011"
輸出: "10101"
public class Main {
public static void main(String[] args) {
Main test = new Main();
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
String a = sc.nextLine();
String b = sc.nextLine();
String c = test.addBinary(a,b);
System.out.println(c);
}
public String addBinary(String a, String b) {
//思路 先將2進制轉變成10進制 相加後在轉變成2進制
int c_a = Integer.valueOf(a,2); //直接將 2進制轉變成10進制
int c_b = Integer.valueOf(b, 2);
int c = c_a + c_b;
String x = Integer.toBinaryString(c);
return x;
}
}
這種做法沒有考慮大數問題
https://blog.csdn.net/catchingSun/article/details/50571593