题目1140: 进制转换
2013-03-19 10:48
295 查看
题目描述
将M进制的数X转换为N进制的数输出。
输入
输入的第一行包括两个整数:M和N(2<=M,N<=36)。
下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。
输出
输出X的N进制表示的数。
样例输入
样例输出
提示 [+]
*** 提示已隐藏,点击上方 [+] 可显示 ***
来源
2008年清华大学计算机研究生机试真题
注意:
(1) 此题为高精度进制转换
(2)输入时如有字母,则字母为大写,输出时如有字母,则字母为小写。
【思路】:
浅谈进制转换
可以用栈存储,参考:点击打开链接
将M进制的数X转换为N进制的数输出。
输入
输入的第一行包括两个整数:M和N(2<=M,N<=36)。
下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。
输出
输出X的N进制表示的数。
样例输入
10 2 11
样例输出
1011
提示 [+]
*** 提示已隐藏,点击上方 [+] 可显示 ***
来源
2008年清华大学计算机研究生机试真题
注意:
(1) 此题为高精度进制转换
(2)输入时如有字母,则字母为大写,输出时如有字母,则字母为小写。
【思路】:
浅谈进制转换
/********************************* * 日期:2013-2-19 * 作者:SJF0115 * 题号: 天勤OJ 题目1140: 进制转换 * 来源:http://acmclub.com/problem.php?id=1140 * 结果:AC * 来源:2008年清华大学计算机研究生机试真题 * 总结: **********************************/ #include <string.h> #include <stdio.h> #define MAXSIZE 1000 //输入的字符串 char str[MAXSIZE]; //被除数 int num[MAXSIZE]; //商 int ans[MAXSIZE]; //余数 int res[MAXSIZE]; //a进制转换为b进制 int Change(int a,int b){ int L = strlen(str); int i,j,k,index,c; memset(num,0,sizeof(num)); //字符转换为数字 for(i = 0;i < L;i++){ //0 - 9 if(str[i] >= '0' && str[i] <= '9'){ num[i] = str[i] - '0'; } //a - Z else if(str[i] >= 'a' && str[i] <= 'z'){ num[i] = (str[i] - 'a' + 10); } //A - Z else{ num[i] = (str[i] - 'A' + 10); } }//for //转换 index = 0; while(L){ c = 0; for(i = 0;i < L;i++){ //a进制 c = c * a + num[i]; //转换为b进制 ans[i] = c / b; c = c % b; } //这一轮除法得到的余数 res[index++] = c; //去掉商前缀0 i = 0; while(i < L && ans[i] == 0){ i++; } //商复制到num k = 0; memset(num,0,sizeof(num)); for(j = i;j < L;j++){ num[k++] = ans[j]; } L = k; memset(ans,0,sizeof(ans)); } return index; } int main() { int a,b,L; while(scanf("%d %d",&a,&b) != EOF){ scanf("%s",str); //余数的个数 L = Change(a,b); //输出(转换为字符 例如:余数为10 应该写成a) for(int i = L-1;i >= 0;i--){ if(res[i] > 9){ printf("%c",res[i] - 10 + 'a'); } else{ printf("%d",res[i]); } } printf("\n"); } return 0; }
可以用栈存储,参考:点击打开链接
相关文章推荐
- 题目1140:八皇后
- 九度-题目1138:进制转换
- 九度 oj 题目1140:八皇后
- 62-题目1080:进制转换
- 九度题目1138进制转换
- 题目1138:进制转换
- (c++)小乐同学学会了用程序做进制转换,异常高兴。小鹏为了不让他骄傲自满,决定出道难点的题目考考他。字母集A到Z,依次表示26到1,26个数字。也就是A=26,B=25...Z=1。他用这些字符来构
- 九度 题目1138:进制转换
- 九度OJ 题目1138:进制转换
- 题目1080:进制转换
- 九度 1140 题目1140:八皇后
- 题目1138:进制转换
- 九度OnlineJudge题目1138:进制转换
- 题目1080:进制转换(2008年清华大学计算机研究生机试真题)ps:用java太简单了
- 题目1138:进制转换 (大数据10进制到2进制)
- 题目1080:进制转换(任意进制直接转换方法)
- 题目1080:进制转换
- 题目1208:10进制 VS 2进制(进制转换以及大数保存问题)
- 题目1140:八皇后
- 第十二周oj题目进制转换