都开始做蓝桥杯了, 还想啥最优解法啊? 暴力它不香吗 不动脑它不香吗? 这代码她不美吗?

储备知识

16进制转化为2进制:从最大位数开始,每一位都转化成4位二进制数。
如:34(16进制)——>0011 0100(二进制)。 其中,3转化为0011,4转化为0100。二进制转化为八进制:同理,从最后一位往前,三个三个取,不够三个就补0。
如:0011 0100(二进制)——>000 110 100(二进制)——>064(八进制)——>64(八进制)

注意点:

1、注意输入要求小于10000位的16进制数,是小于10000位,不是小于10000!
2、输入格式为字符串,将16进制转化为2进制,2进制再转化为八进制输出。
3、注意字符串的遍历顺序(正向遍历还是反向遍历)
4、动脑子的解法是:写一个x进制自由转化为n进制的函数。调用函数转化后输出。参考大数运算的解法。

代码:

#include<bits/stdc++.h>
using namespace std;
int main() {int n; cin >> n; while(n--) {string s,s1; cin >> s;int len = s.length();for(int i = 0; i < len; i++) {switch(s[i]) {case '0' : s1+="0000"; break;case '1' : s1+="0001"; break;case '2' : s1+="0010"; break;case '3' : s1+="0011"; break;case '4' : s1+="0100"; break;case '5' : s1+="0101"; break;case '6' : s1+="0110"; break;case '7' : s1+="0111"; break;case '8' : s1+="1000"; break;case '9' : s1+="1001"; break;case 'A' : s1+="1010"; break;case 'B' : s1+="1011"; break;case 'C' : s1+="1100"; break;case 'D' : s1+="1101"; break;case 'E' : s1+="1110"; break;case 'F' : s1+="1111"; break;}} int len1 = s1.length();if(len1 % 3 == 1) { s1.insert(0,"00"); len1 += 2; } if(len1 % 3 == 2) { s1.insert(0,"0"); len1 += 1; }string s3;                                                          //存放结果 bool flag = false;for(int i = 0; i < len1; i += 3) {string s2 ;  s2 += s1[i];  s2 += s1[i+1]; s2 += s1[i+2];if(s2 == "000" && flag == true) s3 += "0";else if(s2 == "001") { s3 += "1"; flag = true; }else if(s2 == "010") { s3 += "2"; flag = true; }else if(s2 == "011") { s3 += "3"; flag = true; }else if(s2 == "100") { s3 += "4"; flag = true; }else if(s2 == "101") { s3 += "5"; flag = true; }else if(s2 == "110") { s3 += "6"; flag = true; }else if(s2 == "111") { s3 += "7"; flag = true; }}cout << (n ? s3+'\n' : s3);}return 0;}

这代码她不美吗?——试题 基础练习 十六进制转八进制相关推荐

  1. java蓝桥杯 试题-基础练习-十六进制转八进制

    试题-基础练习-十六进制转八进制 题目 试题 基础练习 十六进制转八进制 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 ...

  2. Python 蓝桥杯试题 基础练习 十六进制转八进制

    Python 蓝桥杯试题 基础练习 十六进制转八进制 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行, ...

  3. 试题 基础练习 十六进制转八进制

    试题 基础练习 十六进制转八进制 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行,每行一个由09.大写 ...

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

    蓝桥杯 基础试题 十六进制转八进制 题目描述: 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10).接下来n行,每行一个由0到9, ...

  5. 【蓝桥杯】《试题 基础练习 十六进制转八进制》 详解

    大家好,我是鸣人,初次写文章,希望大家多多指教,如果有不对的地方,希望能在评论区指正,如果喜欢看我的文章,可以关注我,我将持续更新,你的支持就是我最大的动力! 1.原理 十六进制转8进制,可以将16进 ...

  6. 蓝桥杯 试题 基础练习 十六进制转八进制c++详解

    资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1<=n<=10). 接下来n行 ...

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

    试题 基础练习 十六进制转八进制 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1< ...

  8. 蓝桥杯试题 基础练习 十六进制转十进制

    蓝桥杯试题 基础练习 十六进制转十进制 C/C++实现 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. ...

  9. 试题 基础练习 十六进制转十进制

    试题 基础练习 十六进制转十进制 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出. 注:十六进制数中的10~15分别用大写的英文字母A.B.C.D.E.F表示. ...

最新文章

  1. 阿里云 Ubuntu PHP7 Nginx Mysql 开发环境搭建
  2. 人工智能升格为国家战略 唐小僧积极发展金融科技
  3. boost智能指针之shared_ptr,scoped_ptr,intrusive_ptr,weak_ptr源码简析
  4. laravel5.5使用sendCloud邮件服务
  5. SAP 电商云 Spartacus UI 从 shipping address 到 shipping method 的 HTTP 请求设计
  6. matlab 高分屏 变小,解决Ubuntu高分屏下matlab标题栏(菜单栏)字体过小问题
  7. 京东投票项目开发笔记
  8. lzg_ad:在CF卡上实现EWF功能
  9. 第四章 使用OpenCV探测来至运动的结构——Chapter 4:Exploring Structure from Motion Using OpenCV
  10. Verilog——hdb3编译码的层次化设计与实现
  11. 腾讯TEG首次集体亮相腾讯全球数字生态大会,这些亮点不容错过!
  12. win10重装系统后连不上公司服务器,win10重装系统后连不上网有什么解决方法
  13. H5C3第二个完整大项目————天猫国际首页跳转登录页
  14. Anki 学习指南(优质资源 教程总结)
  15. 中央电大 c语言程序设计a 试题,中央电大208年秋C语言程序设计A试题1.doc
  16. 问题 B: 结构体---职工信息结构体
  17. 如何恢复已删除的照片
  18. 微信小程序-创建自己的小程序帐号
  19. kk_想要学习的知识
  20. 【Pytorch深度学习50篇】·······第六篇:【常见损失函数篇】-----BCELoss及其变种

热门文章

  1. 实战能力|一文看懂GDB调试底层实现
  2. 扔掉,MySQL!性能被 MariaDB 吊打…
  3. Kafka解惑之Old Producer(1)—— Beginning
  4. RabbitMQ负载均衡(1)
  5. Vimeo针对GIF性能和质量的改进
  6. LiveVideoStackCon深圳-AI无孔不入
  7. Go基础编程:基础数据类型
  8. 大牛书单 | 云原生技术领域好书推荐
  9. 微信「看一看」 推荐排序技术揭秘
  10. 子网划分详解与子网划分实例