蓝桥杯习题 十六进制转八进制

问题描述:

        给定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上其他博主的代码思路,能将样例正确输出来,但是到蓝桥杯系统测评时就要报错,想来应该是测评数据太大了,超出了定义的范围,后经我和我同学对源代码的修改,选择用集合进行输出,这才有了正确的效果,故将代码贴出,望指正。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值