【蓝桥杯】算法提高 P0102

编程入门 行业动态 更新时间:2024-10-26 05:16:57

用户输入三个字符,每个字符取值范围是0-9,A-F。然后程序会把这三个字符转化为相应的十六进制整数,并分别以十六进制,十进制,八进制输出,十六进制表示成3位,八进制表示成4位,若不够前面补0。(不考虑输入不合法的情况)
输入
  1D5
输出
(注意冒号后面有一个空格)
  Hex: 0x1D5
  Decimal: 469
  Octal: 0725

#include <iostream>
#include <cstdio>
#include <math.h>
#include <string.h>
#include <string>
#include <algorithm>
#include <stack>
#include <list>
#include <vector>
using namespace std;typedef long long ll;void hexToOct(string str){string res = "";for(int i=0;i<str.length();i++){switch(str[i]){case '0': res += "0000";break;case '1': res += "0001";break; case '2': res += "0010";break;case '3': res += "0011";break;case '4': res += "0100";break;case '5': res += "0101";break;case '6': res += "0110";break;case '7': res += "0111";break;case '8': res += "1000";break;case '9': res += "1001";break;case 'A': res += "1010";break;case 'B': res += "1011";break;case 'C': res += "1100";break;case 'D': res += "1101";break;case 'E': res += "1110";break;case 'F': res += "1111";break;default:break;}}int a[4],j=0;for(int i=0;i<res.length()-2;i+=3){a[j++] = (res[i] - '0') * 4 + (res[i+1] - '0') * 2 + (res[i+2] - '0');}cout<<"Octal: ";for(int i=0;i<4;i++){cout<<a[i];}cout<<endl;
}void hexToDec(string str){ll sum = 0;for(int i=0;i<str.length();i++){if(str[i]>='0'&&str[i]<='9'){sum = sum * 16 + (str[i] - '0');}else{sum = sum * 16 + (str[i] - 'A' + 10);}}cout<<"Decimal: "<<sum<<endl;
}int main(){ios::sync_with_stdio(false);string str;cin>>str;cout<<"Hex: 0x"<<str<<endl;hexToDec(str);hexToOct(str);return 0;
}

 

更多推荐

算法,蓝桥杯

本文发布于:2023-05-31 21:28:58,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/400255.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:算法   蓝桥杯

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!