题目描述
在实际的应用中,数制转换是常用的技巧,现在需要完成 P 数制数转换为 R 进制数的问题 (2 <= P, R <= 16)
输入描述
每行包含三个数据 p, r, n, 分别是 p 进制,r 进制,待转换的 p 进制数 n(n 的十进制表示小于 10 ^ 8)
当输入 0 0 0 时,表示输入结束,无须处理。
输出描述
每行一个数,表示进制转换的结果
样例输入
10 16 155
16 8 1A
0 0 0
样例输出
9B
32
#include<bits/stdc++.h>
using namespace std;
int main()
{
int p,r,i,j,l,n;
int t;
char s[10],k[10];
while(cin>>p>>r>>s)
{
n=0;
l=strlen(s);
for(i=0;i<l;i++)
{
n=n*p;
if(s[i]<'A') n=n+s[i]-'0';
else n+=s[i]-'A'+10;
}
for(i=0;n>0;i++)
{
t=n%r;
if(t>9) k[i]=t+'A'-10;
else k[i]=t+'0';
n/=r;
}
while(i--)
cout<<k[i];
cout<<endl;
}
}