蓝桥杯基础练习之十六进制转八进制
问题描述
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
【注意】
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
【提示】
先将十六进制数转换成某进制数,再由某进制数转换成八进制。
我的想法:
复习的时候发现这种简单题竟然不会!?相当受打击了,一开始的想法是将输入的十六进制数强转为十进制,再按照公式转为八进制,可题目给的数据挺大的,肯定会超时,网上搜了答案都是转为二进制再转八进制,按照自己思路整理了一下,方便复习。
代码如下:
#include<iostream>
#include<cstring>
using namespace std;
void trans(string s)
{int len1=s.size();string res1="";for(int i=0;i<len1;i++)//十六进制转八进制 {switch(s[i]){case '0': res1 += "0000";break;case '1': res1 += "0001"; break;case '2': res1 += "0010"; break;case '3': res1 += "0011"; break;case '4': res1 += "0100"; break;case '5': res1 += "0101"; break;case '6': res1 += "0110"; break;case '7': res1 += "0111"; break;case '8': res1 += "1000"; break;case '9': res1 += "1001"; break;case 'A': res1 += "1010"; break;case 'B': res1 += "1011"; break;case 'C': res1 += "1100"; break;case 'D': res1 += "1101"; break;case 'E': res1 += "1110"; break;case 'F': res1 += "1111"; break;} }if(res1.size()%3==1) res1="00"+res1;if(res1.size()%3==2) res1="0"+res1;string res2="";int len2=res1.size();for(int i=0;i<len2;i+=3){string t=res1.substr(i,3);if(i==0&&t=="000") res2 +="";//避免因为000导致转换为八进制时有前导0else res2 +=((4*(t[0]-'0')+2*(t[1]-'0')+(t[2]-'0')))+'0'; }cout<<res2<<endl;}
int main()
{//进制转换int n;cin>>n;string dates[n];//存储输入string字符串 for(int i=0;i<n;i++){cin>>dates[i];}for(int i=0;i<n;i++)//遍历每一个字符串进行转换 {trans(dates[i]);}return 0;
}
蓝桥杯基础练习之十六进制转八进制相关推荐
- 蓝桥杯练习:C语言十六进制转八进制
这题对我来说是有点难度的,最后做出来,但是提交显示 运行错误,看不出哪里出错了. 我的思路: 将十六进制转化为二进制,二进制最后转化为八进制. 首先将十六进制存入数组,然后将数组中每一位转化为对应的十 ...
- 蓝桥杯简单题之十六进制转八进制(JAVA版)
首先对等待程序猿成长之路系列的小伙伴们说声抱歉,春节来临,可能要拖更一段时间,但是草稿已经在写,发布将会于春节后进行发布 春节第一天闲着无聊打算找个蓝桥杯的题目练练手,诶嘿,这就找到一题,话不多说,上 ...
- 蓝桥杯基础练习之十六进制转十进制(python实现)
(资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进制数中的10~15分别用大写的英文字母A. ...
- 蓝桥杯基础练习合集一(C语言) 1.A+B问题2.数列排序3.十六进制转八进制4.十六进制转十进制5.十进制转十六进制
目录 1.A+B问题 2.数列排序 3.十六进制转八进制 4.十六进制转十进制 5.十进制转十六进制 1.A+B问题 问题描述 输入A.B,输出A+B. 输入格式 输入的第一行包括两个整数,由空格分隔 ...
- 蓝桥杯 基础练习 十进制转十六进制(C++)
蓝桥杯 基础练习 十进制转十六进制(C++) 最近自己在练习,将正确的代码分享同时也是记录便于查看.但有的可能写的太复杂,不一定是最简便的代码. 这个是我最近学习了一点关于栈的算法,利用栈来写的 问题 ...
- 蓝桥杯——基础练习——十六进制转十进制
package com.study.蓝桥杯.基础练习;/* 问题描述从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出.注:十六进制数中的10~15分别用大写的英文字母A.B ...
- 蓝桥杯 基础练习全解 答案+解析 共17题 python
关键字 A+B问题,数列排序,十六进制转八进制,十六进制转十进制,十进制转十六进制,特殊回文数,回文数,特殊的数字,杨辉三角形,查找整数,数列特征,字母图形,01字串,闰年判断,斐波那契数列,圆的面积 ...
- 蓝桥杯基础视频 笔记
学习地址:哔哩哔哩网站--蓝桥杯基础视频 博主整理--源码下载--百度网盘链接 蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部 ...
- 蓝桥杯基础-【切面条】不用画图的解题思路
我们先来看[切面条]的题目: 一根高筋拉面,中间切一刀,可以得到2根面条. 如果先对折1次,中间切一刀,可以得到3根面条. 如果连续对折2次,中间切一刀,可以得到5根面条. 那么,连续对折10次,中间 ...
最新文章
- 简明 Vim 练级攻略(转)
- 万维网源代码以 NFT 形式拍卖,价值或超 4.5 亿?
- poj 1740 A New Stone Game 博弈
- 【教程】TestComplete测试桌面应用程序教程(四)
- 采集Nginx日志的几种方式
- 第三部分:Idea重构总结
- VTK:地形抽取用法实战
- Linux 系统如何调整时区和时间
- 信息学奥赛一本通 1005:地球人口承载力估计| OpenJudge NOI 小学奥数 7653
- 19.CSS background
- Linux学习总结(36)——创建、复制、剪切、重命名、清空和删除文件夹的命令
- Min(BZOJ 1441)
- 51单片机简易烧录方法
- Enterprise Architect Professional Edition
- 用一年的数据预测下一年数据_一年的招聘数据中的经验教训
- Android Studio文本编辑框EditText
- 强制清理CDN(DNS)缓存方法
- 一文看懂未来加密行业如何应对监管?
- oracle ins ctx.mk,(原创)RHEL/CentOS 6.x 64位安装Oracle11gR2 64位出现ins_ctx.mk报错解决...
- JAVA EE--13元老