问题描述:
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式:
输入第一行为一个正整数n(1<= n <= 10)。
接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制长度不超过100000。
输出格式:
输出n行,每行为输入对应的八进制正整数。
样例输入:
2
39
123ABC
样例输出:
71
4435274
代码如下:
import java.math.BigInteger;
import java.util.*;
public class arraySorting {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int count = sc.nextInt();
if (count >= 1 && count <= 10){
BigInteger []arr = new BigInteger[count];
ArrayList<Object> list = new ArrayList<>();
for(int i = 0; i < arr.length; i++){
String strnum = sc.next();
//在radix进制下的strnum转换为8进制的字符串
String str = new BigInteger(strnum, 16).toString(8);
list.add(str);
}
Iterator<Object> iterator = list.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
}
博主也是蓝桥杯小白,在刷题的时候,遇到了这道题,看了CSDN上其他博主的代码思路,能将样例正确输出来,但是到蓝桥杯系统测评时就要报错,想来应该是测评数据太大了,超出了定义的范围,后经我和我同学对源代码的修改,选择用集合进行输出,这才有了正确的效果,故将代码贴出,望指正。