进制转换-辗转相除
输入一个十进制数 N,将它转换成 R 进制数输出。在 10≤R≤16 的情况下,用'A'
表示 10,用'B'
表示 11,用'C'
表示 12,用'D'
表示 13,用'E'
表示 14,用'F'
表示 15。
输入格式
输入包含两个整数 N(N≤10000) 和 R(2≤R≤16)。
注意,NN 有可能是负整数。
输出格式
输出一行,表示转换后的数。
样例输入复制
23 12
样例输出复制
1B
辗转相除类似,将与进制R相除的余数存在一个数组中,然后倒序输出
#include <iostream>
using namespace std;
char ans[105];//存放结果
int main()
{
int N,R,p,m;
cin>>N>>R;
if(N<0)//处理负数
{
N=-N;
}
if(N==0)
{
cout<<0;
}
m=0;
while(N)//用一般的进制取余法
{
p=N%R;
if(p<10)
{
ans[m++]='0'+p;//因为是字符数组
}
else
{
ans[m++]='A'-10+p;
}
N=N/R;
}
for(int i=m-1;i>=0;i--)//倒序输出
{
cout<<ans[i];
}
cout<<endl;
}