中企动力制作的网站后台,网站建设与推广方案模板,小程序代理多少钱,seo关键词优化推广报价多少钱试题 基础练习 十六进制转八进制
资源限制
内存限制#xff1a;512.0MB C/C时间限制#xff1a;1.0s Java时间限制#xff1a;3.0s Python时间限制#xff1a;5.0s
问题描述 给定n个十六进制正整数#xff0c;输出它们对应的八进制数。输入格式 输入的第…试题 基础练习 十六进制转八进制
资源限制
内存限制512.0MB C/C时间限制1.0s Java时间限制3.0s Python时间限制5.0s
问题描述 给定n个十六进制正整数输出它们对应的八进制数。输入格式 输入的第一行为一个正整数n 1n10。 接下来n行每行一个由0~9、大写字母A~F组成的字符串表示要转换的十六进制正整数每个十六进制数长度不超过100000。输出格式 输出n行每行为输入对应的八进制正整数。 【注意】 输入的十六进制数不会有前导0比如012A。 输出的八进制数也不能有前导0。样例输入 2 39 123ABC样例输出 71 4435274 【提示】 先将十六进制数转换成某进制数再由某进制数转换成八进制。 具体思路给出一个转换函数先将16进制数字转化为整数再将整数转化为八进制字符串
看change函数即可
版本一使用数字来作为中间过程过多的数据long long完全无法接收。
#includeiostream
#includevector
#includestring
#includecmath
#includestring
#includealgorithm
using namespace std;string change(string s)
{string res;long long num 0;int step 0;for (int i s.size() - 1; i 0; i--){switch (s[i]){case 1:num 1 * pow(16, step);break;case 2:num 2 * pow(16, step);break;case 3:num 3 * pow(16, step);break;case 4:num 4 * pow(16, step);break;case 5:num 5 * pow(16, step);break;case 6:num 6 * pow(16, step);break;case 7:num 7 * pow(16, step);break;case 8:num 8 * pow(16, step);break;case 9:num 9 * pow(16, step);break;case A:num 10 * pow(16, step);break;case B:num 11 * pow(16, step);break;case C:num 12 * pow(16, step);break;case D:num 13 * pow(16, step);break;case E:num 14 * pow(16, step);break;case F:num 15 * pow(16, step);break;}}int m;while (num){m num % 8;num / 8;res 0m;// res to_string(m);}reverse(res.begin(), res.end());return res;
}int main()
{int n;cin n;vectorstring v(n);vectorstring res(n);for (int i 0; i n; i){cin v[i];string temp change(v[i]);res[i] temp;}for (int i 0; i n; i){cout res[i];cout endl;}return 0;
} 【解法二】使用16-》2-》8进制
#include iostream
using namespace std;int main()
{int n;cinn;for(int i0; in; i){ string tow;string sixteen;string eight;cinsixteen;for(int j0; jsixteen.length(); j){switch(sixteen[j]){case 0:tow0000;break;case 1:tow0001;break;case 2:tow0010;break;case 3:tow0011;break;case 4:tow0100;break;case 5:tow0101;break;case 6:tow0110;break;case 7:tow0111;break;case 8:tow1000;break;case 9:tow1001;break;case A:case a:tow1010;break;case B:case b:tow1011;break;case C:case c:tow1100;break;case D:case d:tow1101;break;case E:case e:tow1110;break;case F:case f:tow1111;break;}}if(tow.length()%31)tow00tow;if(tow.length()%32)tow0tow;if(!(tow[0]0tow[1]0tow[2]0)){char temp;temp (tow[0]-0)*4(tow[1]-0)*2tow[2];eight temp;}for(int j3; jtow.length(); j3){eight(tow[j]-0)*4(tow[j1]-0)*2tow[j2];}couteightendl;}return 0;
}