蓝桥杯 基础练习 十六进制转八进制
2015-01-25 20:35
232 查看
问题描述
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
注意
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
提示
先将十六进制数转换成某进制数,再由某进制数转换成八进制。
乍一看不是很难的一道题,做法也很多,但是提交的时候老是超时,一看数据貌似很巨大,本来我是用循环算出十进制数(忽略了提示),再把十进制数转换为八进制,结果超时无疑,无奈数据太巨大,只能使用超级无敌打表法,将16进制数 一位-》四位 通过查表转换为二进制,然后再
三位-》一位 转换为八进制,嗯,就是这样
给定n个十六进制正整数,输出它们对应的八进制数。
输入格式
输入的第一行为一个正整数n (1<=n<=10)。
接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。
输出格式
输出n行,每行为输入对应的八进制正整数。
注意
输入的十六进制数不会有前导0,比如012A。
输出的八进制数也不能有前导0。
样例输入
2
39
123ABC
样例输出
71
4435274
提示
先将十六进制数转换成某进制数,再由某进制数转换成八进制。
乍一看不是很难的一道题,做法也很多,但是提交的时候老是超时,一看数据貌似很巨大,本来我是用循环算出十进制数(忽略了提示),再把十进制数转换为八进制,结果超时无疑,无奈数据太巨大,只能使用超级无敌打表法,将16进制数 一位-》四位 通过查表转换为二进制,然后再
三位-》一位 转换为八进制,嗯,就是这样
#include<iostream> #include<string> using namespace std; int main() { string num2,num8,num16; int n,i,len,num,p; cin>>n; while(n--) { //16进制转换成二进制(字符串) num2=num8=num16=""; cin>>num16; len=num16.length(); for(i=0;i<len;i++) { switch(num16[i]) { case '0':num2+="0000";break; case '1':num2+="0001";break; case '2':num2+="0010";break; case '3':num2+="0011";break; case '4':num2+="0100";break; case '5':num2+="0101";break; case '6':num2+="0110";break; case '7':num2+="0111";break; case '8':num2+="1000";break; case '9':num2+="1001";break; case 'A':num2+="1010";break; case 'B':num2+="1011";break; case 'C':num2+="1100";break; case 'D':num2+="1101";break; case 'E':num2+="1110";break; case 'F':num2+="1111";break; default:break; } } //cout<<num2<<endl; //长度修正 len=num2.length(); if(len%3==2) { num2="0"+num2; } if(len%3==1) { num2="00"+num2; } //二进制转换成八进制 len=num2.length(); //cout<<len<<endl; for(i=0;i<len;i=i+3) { num=4*(num2[i]-48)+2*(num2[i+1]-48)+(num2[i+2]-48); if(i==0&&num==0) continue; cout<<num; } /*for(i=0;i<num8.length();i++) { if(num8[i]=='0'&&i==0) continue; cout<<num8[i]; }*/ cout<<endl; } return 0; }
相关文章推荐
- 蓝桥杯-- 基础练习 十六进制转八进制(大数操作)
- 蓝桥杯-基础练习-十六进制转八进制
- 蓝桥杯 基础练习 十六进制转八进制
- 蓝桥杯 基础练习 十六进制转八进制
- 蓝桥杯 基础练习 十六进制转八进制
- 蓝桥杯-基础练习12 十六进制转八进制
- 蓝桥杯 基础练习 十六进制转八进制
- [蓝桥杯练习系统]基础练习 十六进制转八进制
- 蓝桥杯 基础练习 十六进制转八进制
- 【蓝桥杯】【基础练习02】【十六进制转八进制】
- 蓝桥杯-基础练习-十六进制转八进制(被超时了!!!)
- "蓝桥杯“基础练习:十六进制转八进制
- 蓝桥杯基础练习——十六进制转八进制
- 蓝桥杯试题集 基础练习 十六进制转八进制
- "蓝桥杯“基础练习:十六进制转八进制
- 蓝桥杯 【基础练习】 十六进制转八进制
- 蓝桥杯:基础练习 十六进制转八进制
- 【蓝桥杯】基础练习 十六进制转八进制
- 蓝桥杯-基础练习-BASIC-12-十六进制转八进制
- 【蓝桥杯】 基础练习 十六进制转八进制