蓝桥杯 十六进制转八进制(java实现)

Java实现蓝桥杯十六进制转八进制 基础练习 十六进制转八进制 时间限制:1.0s 内存限制:512.0MB 提交此题 锦囊1 锦囊2 问题描述   给定n个十六进制正整数,输出它们对应的八进制数。 输入格式   输入的第一行为一个正整数n (1<=n<=10)。   接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式   输出n... 阅读详情

这里写图片描述

下面是测试数据(这个数据太大了,感受数据支配的恐惧,导致常规方法行不通)
这里写图片描述

代码虽然多,但是可以看其思想,执行效率还是非常高的。CPU使用情况500ms,内存使用48MB。哈哈,比网上的效率要高很多呢。用了switch case ,造成代码太繁琐,不过都是复制粘贴,根本就不影响时间。
以下是对比,第一行是自己写的,第二行是写完第二天后从网上找的。对比情况如下
这里写图片描述

思想是字符串的使用,先将16进制转换成2进制,1位16进制对应4位二进制,1位8进制对应3位二进制,用数组方式进行查找,用可变字符串 StringBuilder(效率更高) 或者StringBuffer(线程安全)接受。。。有什么看不懂的评论即可。


import java.util.Scanner;

/**
 * 16进制转8进制 每个16进制长度不超过10万。、 所以这就是超大数
 * 
 * @author banaa
 *
 */

public class Main {

    static String[] bin = { "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010",
            "1011", "1100", "1101", "1110", "1111" };
    static String[] oct = { "0", "1", "2", "3", "4", "5", "6", "7" };

    public static void main(String[] args) {

        Scanner s = new Scanner(System.in);
        int num = s.nextInt();

        String[] str = new String[num];
        for (int i = 0; i < num; i++) {
            str[i] = s.next();
        }

        for(int i=0; i<num; i++) {
            String result = hexToBin(str[i]).toString();
            String octResult = binToOct(result);
            if(octResult.startsWith("0")) {
                octResult = octResult.substring(1);
            }
            if(octResult.startsWith("0")) {
                octResult = octResult.substring(1);
            }
            System.out.println(octResult);
        }
    }

    private static StringBuffer hexToBin(String str) {
        int length = str.length();
        int start = 0;
        int end = 1;
        StringBuffer result = new StringBuffer();
        for (int i = 0; i < length; i++) {
            String subStr = str.substring(start, end);
            start++;
            end++;
            String s = transform(subStr);
            result.append(s);
        }
        return result;
    }

    private static String binToOct(String str) {
        int length = str.length();
        if(length % 3 == 1) {
            str= "00"+str;
        } else if(length % 3 == 2) {
            str = "0"+str;
        }
        int start = 0;
        int end = 3;
        StringBuffer sb = new StringBuffer();
        for(int i=0; i<str.length()/3; i++) {
            String subStr = str.substring(start, end);
            start += 3;
            end += 3;
            String s = transform2(subStr);
            sb.append(s);
        }
        return sb.toString();
    }

    private static String transform(String str) {
        String result = "";
        switch (str) {
        case "0":
            result = bin[0];
            break;
        case "1":
            result = bin[1];
            break;
        case "2":
            result = bin[2];
            break;
        case "3":
            result = bin[3];
            break;
        case "4":
            result = bin[4];
            break;
        case "5":
            result = bin[5];
            break;
        case "6":
            result = bin[6];
            break;
        case "7":
            result = bin[7];
            break;
        case "8":
            result = bin[8];
            break;
        case "9":
            result = bin[9];
            break;
        case "A":
            result = bin[10];
            break;
        case "B":
            result = bin[11];
            break;
        case "C":
            result = bin[12];
            break;
        case "D":
            result = bin[13];
            break;
        case "E":
            result = bin[14];
            break;
        case "F":
            result = bin[15];
            break;
        default:
            break;
        }
        return result;
    }

    private static String transform2(String str) {
        String result = "";
        switch (str) {
        case "000":
            result = oct[0];
            break;
        case "001":
            result = oct[1];
            break;
        case "010":
            result = oct[2];
            break;
        case "011":
            result = oct[3];
            break;
        case "100":
            result = oct[4];
            break;
        case "101":
            result = oct[5];
            break;
        case "110":
            result = oct[6];
            break;
        case "111":
            result = oct[7];
            break;
        }

        return result;

    }
}
蓝桥杯-基础练习12 十六进制转八进制 (最大测试数据10万位) 源码 蓝桥杯十六进制转八进制源码 要转换的十六进制正整数,每个十六进制数长度不超过100000 1.思路:16进制转2进制,再转8进制,我先转的10进制,数据小还 行,数据大了就game over了。(本题数据最大为10万位) 2.判断2进制的位数对3取模是多少,因为2到8是3位3位的看的。 3.删除最后数据前面的0(题目要求哈)。 4.我就死在这点上,测试数据不是一条条输入的,而是所有数据从文本读入,所以不能用Scanner,得用BufferedReader。 5.最后将StringBuffer转换为String输出,不然就是一直等待测评,我也不知道为什么,或许是我自己的问题吧。这里写图片描述 6.本题注意以下函数用法: ①BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); ②int n = Integer.parseInt(in.readLine()); ③a[i] = in.readLine(); ④char[] temp = a[i].toCharArray(); ⑤StringBuffer s2 = new StringBuffer(); ⑥s2.append(“0000”); ⑦s3.append(s2.substring(0, 1)); 立即下载

相关推荐

python 爬取携程全国旅游景点信息-2024.4.13

携程网是中国领先的在线旅行服务公司,提供酒店预订、机票预订、旅游度假、商旅管理等服务。携程网上有大量的旅游景点和酒店信息,这些信息对于旅行者和旅游业者都有很大的价值。通过爬虫技术,我们可以从携程网上获取这些信息,并进行数据清洗、数据分析、数据可视化等操作,从而得到有用的洞察和建议。

britlee的博客 1万+

Java进制转换之十六进制转八进制

  基础练习 十六进制转八进制  时间限制:1.0s   内存限制:512.0MB      问题描述  给定n个十六进制正整数,输出它们对应的八进制数。输入格式  输入的第一行为一个正整数n (1&lt;=n&lt;=10)。  接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输出格式  输出n行,每行为输入对应的八进制...

小猴子的博客 9194

CVPR 2024 LaTeX 模板实战:从匿名提交到图表排版的避坑指南

本文详细解析CVPR 2024 LaTeX模板的使用技巧,涵盖匿名提交设置、pdfLaTeX编译器选择、图表排版优化等关键环节。通过实战案例演示智能引用、公式编号、三线表制作等专业技巧,帮助研究者高效完成论文格式规范,规避常见排版错误。特别针对双栏格式下的图片定位、跨栏表格等复杂场景提供解决方案。

weixin_42561040的博客 453

java(十六进制转八进制)

接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数, 每个十六进制数长度不超过100000。//利用String str=new BigInteger(number,from).toString(to);to:要转换成的进制。输入的第一行为一个正整数n (1

s44Sc21的博客 673

使用autodl服务器运行CasMVSNet以及使用colmap产生的数据

MVSNet学习

qq_44708206的博客 3274

傅里叶红外(FT-IR):Origin数据处理、光谱绘图、曲线优化、图形美化

双击 X 轴,选择“轴线和刻度线”,设置粗细为“2”(较常用的粗细度),主刻度和次刻度为“朝内”,然后在此对话框内选择左轴,设置粗细为“2”,主刻度和次刻度为“无”,上轴和右轴同左轴。(4)在第二个图层基础上新建第三个图层,针对第二组数据重复上述中(1)和(2)的操作,再添加第三组数据的折线图,并重复上述中(3)的操作。FTIR 光谱上的峰只有相对的强弱,因此只分析一个光谱上的一个峰的强度大小并无意义,一般分析两个光谱在同一位置的峰强相对大小,或者分析同一光谱不同位置的峰强相对大小并与另一光谱进行比较。

qiushireader的博客 3932

用Java解决十六进制转八进制

蓝桥杯试题基础练习 这道题看似很简单,用Java自带的进制转换就行,但题目中有一句话,它规定每个十六进制数长度不超过100000,这是一个非常大的数,如果是用Java自带的进制转换,提交后运行会报错。 提示也告诉我们要先将十六进制转换成某进制数再转换为八进制,而这个某进制很明显就是二进制了,所以正确解法如下: import java.util.Scanner; public class 十六进...

是卷啊的博客 1682

【鸿蒙游戏上架审核规范指南】

华为鸿蒙游戏上架审核规范指南摘要

weixin_44161102的博客 918

蓝桥杯刷题--十六进制转八进制(java实现)

问题描述   给定n个十六进制正整数,输出它们对应的八进制数。输入格式   输入的第一行为一个正整数n (1&lt;=n&lt;=10)。   接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输出格式   输出n行,每行为输入对应的八进制正整数。   【注意】   输入的十六进制数不会有前导0,比如012A。   输出的八...

yong_zi的博客 1422

基于YOLOv8的MVTec AD缺陷检测系统设计与实现

速度快,精度高;支持 anchor-free 架构;支持实例分割和图像分类;模块化代码,易于部署与改进;完美兼容 ONNX、TensorRT 等推理框架;官方支持多平台训练和推理(CPU/GPU)。YOLOv8 是工业视觉检测落地非常理想的选择。MVTec AD(Anomaly Detection)数据集包括15类工业对象,每个对象包括多个子类缺陷(例如 “scratch”, “crack”, “hole”)及正常图像。类别缺陷子类bottlecablecapsule。

YOLO 931

【WRF数据准备】基于Python更新geo_em.d0.nc文件中Albedo/LAI等静态地理数据

基于Python更新geo_em.d0.nc文件中Albedo/LAI等静态地理数据

WW、forever的博客 591

蓝桥杯—十六进制转八进制(JAVA实现)

文章目录一、题目二、解题思路三、代码实现 一、题目 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述   给定n个十六进制正整数,输出它们对应的八进制数。 输入格式   输入的第一行为一个正整数n (1<=n<=10)。   接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式   输出n...

学海无涯乐作舟 580

为YOLO11更换Backbone(一):轻量化之星GhostNet

摘要: 本文重点介绍了轻量化Backbone网络GhostNet及其在YOLO11中的应用。首先分析了Backbone网络在目标检测中的重要性,指出其需平衡特征提取能力和计算效率的需求。然后详细解析了GhostNet的核心思想,包括其通过"幽灵模块"生成冗余特征的设计原理,该模块使用1×1卷积生成少量内在特征,再通过廉价线性变换生成更多幽灵特征,显著降低了计算量。GhostNet的创新设计使其在保持精度的同时大幅减少了参数和FLOPs,为YOLO11等目标检测模型提供了高效的轻量化解决方

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1498

【蓝桥杯】基础练习 十六进制转八进制(Java实现)

分析: 一开始看到这个题目我认为比较简单,不顾题目的疯狂暗示的“先将十六进制数转换成某进制数,再由某进制数转换成八进制。”的提示,自己的想法是把16进制先转化为10进制,再从10进制转化为8进制。用了Java自带的函数实现了代码,用样例测试也通过了,但是提交的代码显示运行错误。打开测评的输入数据一看,明白了错误所在。 题中说了“每个十六进制数长度不超过100000”,这个长度哪怕是long类型也...

allyyhh的博客 2万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

蓝桥杯——十六进制转八进制(Java实现)

蓝桥杯练习。十六进制转八进制,java实现。

牧码杭城 6409

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

蓝桥杯 java实现十六进制转八进制

基础练习 十六进制转八进制 时间限制:1.0s 内存限制:512.0MB问题描述   给定n个十六进制正整数,输出它们对应的八进制数。 输入格式   输入的第一行为一个正整数n (1<=n<=10)。   接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式   输出n行,每行为输入对应的八进制正整数。 【注意】   输入的十六进制数不会有前导0,比如012A。   输出的八进制数也不能有前导0。 样例输入  

999

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

蓝桥杯 基础练习 十六进制转八进制 Java实现

基础练习 特殊回文数 试题 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 给定n个十六进制正整数,输出它们对应的八进制数。 输入格式 输入的第一行为一个正整数n (1<=n<=10)。   接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式 输出n行,每行为输入对应的八进制正整数。 【注意】   输入的十六进制数不会有前导0,比如012A。   输出的八进制数也不能有前导0。 样例输入 2  

weixin_43824597的博客 665

蓝桥杯 基础练习 十六进制转八进制 Java实现

蓝桥杯 基础练习 十六进制转八进制 Java实现 问题描述   给定n个十六进制正整数,输出它们对应的八进制数。 输入格式   输入的第一行为一个正整数n (1<=n<=10)。   接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式   输出n行,每行为输入对应的八进制正整数。      【注意】  ...

qq_44852180的博客 232

蓝桥杯-十六进制转八进制(java实现)

问题描述   给定n个十六进制正整数,输出它们对应的八进制数。 输入格式   输入的第一行为一个正整数n (1<=n<=10)。   接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式   输出n行,每行为输入对应的八进制正整数。 【注意】   输入的十六进制数不会有前导0,比如012A。   输出的八进制...

AXKDD6555的博客 458

蓝桥杯 试题 基础设计 十六进制转八进制

蓝桥杯 基础试题 十六进制转八进制 题目描述: 给定n个十六进制正整数,输出它们对应的八进制数。 输入格式 输入的第一行为一个正整数n (1<=n<=10)。接下来n行,每行一个由0到9,A到F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式 输出n行,每行为输入对应的八进制正整数。 注意 输入的十六进制数不会有前导0,比如012A。    输出的八进制数也不能有前导0。 测试用例 样例输入 2    39    123ABC

weixin_45619069的博客 2861

java蓝桥杯十六进制转换_蓝桥杯 十六进制转八进制(超大测试数据,java实现)...

问题描述给定n个十六进制正整数,输出它们对应的八进制数。输入格式输入的第一行为一个正整数n (1<=n<=10)。接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输出格式输出n行,每行为输入对应的八进制正整数。【注意】输入的十六进制数不会有前导0,比如012A。输出的八进制数也不能有前导0。样例输入239123...

weixin_30416973的博客 415

蓝桥杯:基础练习 十六进制转八进制(java实现)

问题描述 给定n个十六进制正整数,输出它们对应的八进制数。 输入格式   输入的第一行为一个正整数n (1<=n<=10)。   接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。 输出格式   输出n行,每行为输入对应的八进制正整数。 【注意】   输入的十六进制数不会有前导0,比如012A。   输出的八进制数也不能有前导0。 样例输入   2   39   123ABC 样例输出   71   4435274 【提示】

qq_45087487的博客 504
上一篇: Linux vi/vim的使用
下一篇: 解决wordpress下载插件,安装失败,无法创建目录问题
蓝尊宝
博客等级 码龄10年 13粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值