进制转换
程序员文章站
2022-07-13 13:17:13
...
Problem Description
输入一个十进制数N,将它转换成R进制数输出。
Input
输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R != 10)。
Output
为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。
Sample Input
7 2
23 12
-4 3
Sample Output
111
1B
-11
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int N,R;
while(~scanf("%d",&N))
{
cin>>R;
int A[100];
int top=0;
if(N==0)cout<<N<<endl;
else if(N>0)
{
while(N!=0)
{
A[top]=N%R;
top++;
N=N/R;
}
while(top!=0)
{
top--; char a;
if(A[top]>=10)
{
a=char(55+A[top]);
cout<<a;
}
else
cout<<A[top];
}
cout<<endl;
}
else if(N<0)
{
N=-N;
while(N!=0)
{
A[top]=N%R;
top++;
N=N/R;
}
cout<<"-";
while(top!=0)
{
top--; char a;
if(A[top]>=10)
{
a=char(55+A[top]);
cout<<a;
}
else
cout<<A[top];
}
cout<<endl;
}
}
return 0;
}