题目1130: 数制转换
2013-03-19 08:39
99 查看
题目描述
求任意两个不同进制非负整数的转换(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)。
样例输入
样例输出
提示 [+]
*** 提示已隐藏,点击上方 [+] 可显示 ***
来源
2008年北京大学图形实验室计算机研究生机试真题
【思路】
求任意两个不同进制非负整数的转换(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)。
样例输入
4 123 10
样例输出
27
提示 [+]
*** 提示已隐藏,点击上方 [+] 可显示 ***
来源
2008年北京大学图形实验室计算机研究生机试真题
【思路】
/********************************* * 日期:2013-2-19 * 作者:SJF0115 * 题号: 天勤OJ 题目1130: 数制转换 * 来源:http://acmclub.com/problem.php?id=1130 * 结果:AC * 来源:2008年北京大学图形实验室计算机研究生机试真题 * 总结: **********************************/ #include <string.h> #include <stdio.h> char str[1001]; char ans[1001]; /* * 转换为十进制 * str是a进制数字 */ long long int ToD(int a){ int c,len,i; long long int sum,w; len = strlen(str); //转换为十进制的数字 sum = 0; //权值 w = 1; //从低位到高位遍历每一个数字 for(i = len-1;i >= 0;i--){ //0 - 9 if(str[i] >= '0' && str[i] <= '9'){ c = str[i] - '0'; } //A - F else if(str[i] >= 'A' && str[i] <= 'F'){ c = str[i] - 'A' + 10; } //a - f else{ c = str[i] - 'a' + 10; } //累加该位数字和该位数字的权值的积 sum += c * w; //进制权值 w *= a; } return sum; } /* * 十进制数字num转换为b进制数字,并用ans存储 */ int ToAny(long long int num,int b){ int index = 0,c; do{ //计算该位数字 c = num % b; //将数字转换为字符 ans[index++] = (c < 10) ? (c + '0') : (c - 10 + 'A') ; num /= b; }while(num); return index; } int main() { long long int c; int len,a,b,i; while(scanf("%d %s %d",&a,str,&b) != EOF){ //转换为十进制 c = ToD(a); //转换为b进制 len = ToAny(c,b); //输出 for(i = len-1;i >= 0;i--){ printf("%c",ans[i]); } printf("\n"); } return 0; }
相关文章推荐
- 九度OJ 题目1118:数制转换
- 题目1130:日志排序
- 九度OJ题目1118:数制转换
- 题目1118:数制转换
- 题目1118:数制转换
- 数制转换 (九度oj题目44)
- 九度OJ 题目1130:日志排序
- 九度 oj 题目1130:日志排序
- 题目1130:日志排序
- 题目1118:数制转换(2008年北京大学图形实验室计算机研究生机试真题)
- 题目1118:数制转换
- 九度 题目1118:数制转换
- 【九度OJ】题目1118:数制转换 解题报告
- 九度OJ 题目1130:日志排序
- 【九度】题目1130:日志排序
- 题目44:数制转换
- 九度OnlineJudge题目1118:数制转换
- 九度OJ 题目1130:日志排序
- 题目44:数制转换
- 题目1118:数制转换