九度OJ 1118 数制转换(a进制 -> b进制)
来源:互联网 发布:宣传音频制作软件 编辑:程序博客网 时间:2024/05/20 16:36
原题地址
http://ac.jobdu.com/problem.php?pid=1118
输入a进制数n,转为对应b进制的数。
解题思路
一道水题。
进制转换的问题以前大一学C语言的时候就做过,这道题目比较简单,a和b都在2~16以内,很常规,不需要更多的字母来表示(还记得以前做过一道26进制内的,当时做了很久哈)
遇到两个数进制转换的问题,一般采取的办法都是:先将源进制的数转为中间的十进制数,再由十进制转到目标进制的数。前者采取诸位加权累加,后者则是不断取余取商的方法。
AC代码
#include <iostream>#include <cstring>using namespace std;int main(){ ios::sync_with_stdio(false); //关闭和stdio的同步 int a, b; char num[100]; while(cin >> a >> num >> b) { int dec = 0, base = 1, x; //a进制转10进制 for(int i = strlen(num)-1; i >= 0; --i) { if (num[i] >= '0' && num[i] <= '9') x = num[i] - '0'; else if (num[i] >= 'a' && num[i] <= 'f') x = num[i] - 'a' + 10; else x = num[i] - 'A' + 10; dec += x*base; //加权累加 base *= a; //权重加倍 } //cout << dec << endl; if (dec == 0) //0是特殊情况 { cout << 0 << endl; continue; } //10进制转b进制 int out[100], cnt = 0; while (dec) //直到不能再取余 { out[cnt++] = dec % b; //先取余 dec /= b; //再取商 } for (int i = cnt-1; i >= 0; --i) { if (out[i] >= 10) cout << (char)(out[i] - 10 + 'A'); else cout << out[i]; } cout << endl; } return 0;}
0 0
- 九度OJ 1118 数制转换(a进制 -> b进制)
- 九度OJ 1118:数制转换 (进制转换)
- 九度OJ 1118 数制转换
- 九度OJ 题目1118:数制转换
- 九度oj-1118-数制转换
- 九度OJ-1118-数制转换
- 九度OJ题目1118:数制转换
- 【九度OJ】题目1118:数制转换 解题报告
- 数制转换 (九度oj题目44)
- 九度1118:数制转换
- A + B 九度oj
- 九度OnlineJudge题目1118:数制转换
- 九度题目1118数制转换
- 九度 题目1118:数制转换
- 九度OJ 1016:火星A+B (进制转换)
- 九度OJ 1026:又一版 A+B (进制转换)
- 九度OJ 1010:A + B (字符串处理)
- 九度OJ 1015:还是A+B (基础题)
- 自创网页首页”我的书屋“
- REST--REpresentational State Transfer
- JAVA实现重建二叉树(《剑指offer》)
- 车牌云识别API接口调用
- Spark web Framework 结合sql2o连接MySQL
- 九度OJ 1118 数制转换(a进制 -> b进制)
- 贪心入门题——看电视(区间调度问题)
- 安卓自定义View网址
- unity中获取button文本的内容
- SpringMVC与Struts2区别与比较总结
- Drupal8安装提示PHP OPcode caching未启用的解决方法
- (转)Java变量初始化赋值null
- C语言基础:C控制语句:分支和跳转
- 商品展示案例