首页 > 代码库 > 进制转换
进制转换
1173: 进制转换
时间限制: 1 Sec 内存限制: 64 MB提交: 112 解决: 37
[提交][状态][讨论版]
题目描述
编一程序实现两种不同进制之间的数据转换。
输入
输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制n(2 ≤ n ≤ 16),第二行是一个n进制数,若n > 10则用大写字母A~F表示数码10~15,并且该n进制数对应的十进制的值不超过1000000000,第三行也是一个正整数,表示转换之后的数的进制m(2 ≤ m ≤ 16)。
输出
输出仅一行,包含一个正整数,表示转换之后的m进制数。
样例输入
16FF2
样例输出
11111111
#include <iostream> using namespace std; const int t=20000000; char a[t],b[t]; int fun(char c) { int k; if (c>='1'&&c<='9') { k=c-'0'; return k; } k=c-55; return k; } int fun1(char x) { int k; if (x>=0&&x<=9) { k=x+'0'; return k; } k=x+55; return k; } int main() { int n,m,i,j,sum=0; cin >> n; cin.get(); cin.getline(a,t); cin >> m; for (i=0;a[i]!='\0';i++) { if (a[i]=='0') { sum*=n; } else { sum=sum*n+fun(a[i]); } } j=0; while (sum!=0) { b[j]=fun1(sum%m); sum=sum/m; j++; } for (i=j-1;i>=0;i--) { cout << b[i]; } cout << endl; return 0; }
进制转换
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。