基础练习 十六进制转八进制
来源:互联网 发布:网络信息发布平台 编辑:程序博客网 时间:2024/05/01 07:43
问题描述
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
【注意】
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
【提示】
先将十六进制数转换成某进制数,再由某进制数转换成八进制。
#include <iostream>#include <string>#include <cstring>#include <cstdlib>#include <bits/stdc++.h>using namespace std;map<char,string> mp;map<string,string> mp1;void init(){ mp['0']="0000",mp['1']="0001";mp['2']="0010";mp['3']="0011";mp['4']="0100"; mp['5']="0101";mp['6']="0110";mp['7']="0111";mp['8']="1000";mp['9']="1001"; mp['A']="1010";mp['B']="1011";mp['C']="1100";mp['D']="1101";mp['E']="1110"; mp['F']="1111"; mp1["000"]="0";mp1["001"]="1";mp1["010"]="2";mp1["011"]="3";mp1["100"]="4"; mp1["101"]="5";mp1["110"]="6";mp1["111"]="7";}int main(){ init(); string s1,s2,s3,s4,s5; int n;cin>>n; while(n--) { cin >> s1; int sz = s1.size(); s3 = mp[s1[0]]; s2=""; int tot = 0; while(tot<4) { if(s3[tot]=='1') break; tot++; } while(tot<4) { s2+=s3[tot]; tot++; } for(int i=1;i<sz;i++) { s2+=mp[s1[i]]; } if(s2.size()==0) { cout << "0" << endl; continue; } else if(s2.size()%3==1) { s2 = "00"+s2; } else if(s2.size()%3==2) { s2 = "0"+s2; } sz = s2.size(); s4=""; for(int i=0;i<sz;) { s5=""; for(int j=0;j<3;j++,i++) s5+=s2[i]; s4+=mp1[s5]; } cout << s4 << endl; } return 0;}
0 0
- 基础练习 十六进制转八进制
- 基础练习 十六进制转八进制
- 基础练习 十六进制转八进制
- 基础练习 十六进制转八进制
- 基础练习 十六进制转八进制
- 基础练习 十六进制转八进制
- 基础练习 十六进制转八进制
- 基础练习 十六进制转八进制
- 基础练习 十六进制转八进制
- 基础练习 十六进制转八进制
- 基础练习 十六进制转八进制
- 基础练习 十六进制转八进制
- 基础练习 十六进制转八进制
- 基础练习 十六进制转八进制
- 基础练习 十六进制转八进制
- 基础练习 十六进制转八进制
- 基础练习 十六进制转八进制
- 基础练习 十六进制转八进制
- 【 BZOJ 3721】 PA2014 Final Bazarek 贪心
- LitePal学习笔记
- elasticsearch 第二篇(配置篇)
- 图像数据预处理
- request的set-getParameter及getAttribute
- 基础练习 十六进制转八进制
- 学校要选择一个地方作为超市的位置,学校每个有K个部门,每个部门去超市的频率不一样,要求在可以设置的地点中选择一个最优的地点
- 百练2790:迷宫
- maven常用命令
- POJ 2632-Crashing Robots(模拟-robot移动)
- 郁闷的出纳员 treap模板
- A - 棋盘问题
- elasticsearch 第一篇(入门篇)
- 充值流量话费对接微信和支付宝支付实现