作业比赛编号 : 100000579 - 《算法笔记》3.5小节——入门模拟->进制转换 问题 B: 数制转换
2020-06-04 05:40
295 查看
问题 B: 数制转换
[命题人 : 外部导入] 时间限制 : 1.000 sec 内存限制 : 32 MB解决: 952提交: 3701统计
题目描述
求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。
不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F)。
输入
输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2 =< a,b <= 16。
输出
可能有多组测试数据,对于每组数据,输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,...,9,A,B,...,F)。
样例输入 Copy
[code]<span style="color:#333333"><span style="color:#333333">4 123 10</span></span>
样例输出 Copy
[code]<span style="color:#333333"><span style="color:#333333">27</span></span>
提示
用字符串存储和表示不同进制的数。
注意:当转换的数中有AB等时,通过ASCII码来转换进制。
[code]#include<cstdio> #include<cstring> int main(){ int a,b; char n[40]; char zimu[16]={'0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F' };//2进制~16进制 while(~scanf("%d%s%d",&a,n,&b)){ long long y=0,product=1; int len=strlen(n); for(int i=len-1;i>=0;i--)//从个位开始;将a进制数n转换为十进制数y { //要判断字母大小写,以及对应数字代换计算,如使a=10 if(n[i]>57){ //输入是字母 if(n[i]>96) {//输入是小写字母 y=y+product*(n[i]-'W'); //相减使a值对应10;参考ASCII码表,a与W码值相差10 }else { //输入是大写字母 a码值97,W码值87 y=y+product*(n[i]-'7'); //相减使A值对应10,A 码值65,7码值55 } }else y=y+(n[i]-'0')*product; //输入是数字 0-9的ASCII码值为48-57 product*=a; } if(b==10) printf("%lld\n",y);//如果是转换10进制直接输出 else{ int z[40],num=0; //将十进制数y转换为b进制数,注意输出也含字母 全用大写字母 do{ int k=y%b; z[num]=zimu[k]; y=y/b; num++; }while(y!=0); for(int i=num-1;i>=0;i--){ printf("%c",z[i]); } printf("\n"); } } return 0; }
相关文章推荐
- 作业比赛编号 : 100000580 - 《算法笔记》3.6小节——入门模拟->字符串处理 问题 A: 字符串连接
- 《算法笔记》3.5小节——入门模拟->进制转换
- 《算法笔记》-C/C++快速入门->3.1小节-简单模拟 问题 C: 特殊乘法
- 《算法笔记》3.6小节——入门模拟->字符串处理 问题 F: 数组逆置
- 《算法笔记》 3.1小节-入门模拟->简单模拟问题E 超时解决
- 《算法笔记》3.6小节——入门模拟->字符串处理 问题 A: 字符串连接
- 《算法笔记》3.6小节——入门模拟->字符串处理 问题 G: 比较字符串
- 《算法笔记》3.6小节——入门模拟->字符串处理 问题 B: 首字母大写
- 《算法笔记》3.6小节——入门模拟->字符串处理 问题 I: 【字符串】回文串
- 《算法笔记》3.6小节——入门模拟->字符串处理 问题 E: 字符串去特定字符
- 《算法笔记》-C/C++快速入门->3.2小节-简单模拟-查找元素 问题 D:查找
- 《算法笔记》-C/C++快速入门->3.1小节-简单模拟 问题 D:比较奇偶数个数
- 关于OpenGL入门中地球,月亮,太阳运动模拟无法显示的问题(只显示黑框)
- 奇怪的比赛 某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪: 每位选手需要回答10个问题(其编号为1到10),越后面越有难度。
- 《算法笔记》-C/C++快速入门->2.10小节-黑盒测试 问题 E: A+B 输入输出练习V
- 《算法笔记》-C/C++快速入门->2.10小节-黑盒测试 问题 C: A+B 输入输出练习III
- 数据结构作业 迷宫问题 模拟 之基础的BFS DFS
- 《算法笔记》-C/C++快速入门->2.10小节-黑盒测试 问题 B: A+B 输入输出练习II
- 《算法笔记》-C/C++快速入门->2.10小节-黑盒测试 问题 A: A+B 输入输出练习I
- 《算法笔记》-C/C++快速入门->2.8小节-结构体(struct)的使用 问题 E: C语言11.8