这代码她不美吗?——试题 基础练习 十六进制转八进制
生活随笔
收集整理的這篇文章主要介紹了
这代码她不美吗?——试题 基础练习 十六进制转八进制
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
都開始做藍(lán)橋杯了, 還想啥最優(yōu)解法啊? 暴力它不香嗎 不動(dòng)腦它不香嗎? 這代碼她不美嗎?
儲(chǔ)備知識(shí)
16進(jìn)制轉(zhuǎn)化為2進(jìn)制:從最大位數(shù)開始,每一位都轉(zhuǎn)化成4位二進(jìn)制數(shù)。
如:34(16進(jìn)制)——>0011 0100(二進(jìn)制)。 其中,3轉(zhuǎn)化為0011,4轉(zhuǎn)化為0100。二進(jìn)制轉(zhuǎn)化為八進(jìn)制:同理,從最后一位往前,三個(gè)三個(gè)取,不夠三個(gè)就補(bǔ)0。
如:0011 0100(二進(jìn)制)——>000 110 100(二進(jìn)制)——>064(八進(jìn)制)——>64(八進(jìn)制)。
注意點(diǎn):
1、注意輸入要求小于10000位的16進(jìn)制數(shù),是小于10000位,不是小于10000!
2、輸入格式為字符串,將16進(jìn)制轉(zhuǎn)化為2進(jìn)制,2進(jìn)制再轉(zhuǎn)化為八進(jìn)制輸出。
3、注意字符串的遍歷順序(正向遍歷還是反向遍歷)
4、動(dòng)腦子的解法是:寫一個(gè)x進(jìn)制自由轉(zhuǎn)化為n進(jìn)制的函數(shù)。調(diào)用函數(shù)轉(zhuǎn)化后輸出。參考大數(shù)運(yù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; //存放結(jié)果 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;}總結(jié)
以上是生活随笔為你收集整理的这代码她不美吗?——试题 基础练习 十六进制转八进制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蓝桥杯 试题 入门训练 序列求和——6行
- 下一篇: 蓝桥杯 试题 基础练习 十六进制转十进制