题目
输入一个十进制数 <math> <semantics> <mrow> <mi> N </mi> </mrow> <annotation encoding="application/x-tex"> N </annotation> </semantics> </math>N,将它转换成 <math> <semantics> <mrow> <mi> R </mi> </mrow> <annotation encoding="application/x-tex"> R </annotation> </semantics> </math>R 进制数输出。
在 <math> <semantics> <mrow> <mn> 10 </mn> <mo> ≤ </mo> <mi> R </mi> <mo> ≤ </mo> <mn> 16 </mn> </mrow> <annotation encoding="application/x-tex"> 10 \le R \le 16 </annotation> </semantics> </math>10≤R≤16 的情况下,用’A’表示 <math> <semantics> <mrow> <mn> 10 </mn> </mrow> <annotation encoding="application/x-tex"> 10 </annotation> </semantics> </math>10,用’B’表示 <math> <semantics> <mrow> <mn> 11 </mn> </mrow> <annotation encoding="application/x-tex"> 11 </annotation> </semantics> </math>11,用’B’表示 <math> <semantics> <mrow> <mn> 11 </mn> </mrow> <annotation encoding="application/x-tex"> 11 </annotation> </semantics> </math>11,用’C’表示 <math> <semantics> <mrow> <mn> 12 </mn> </mrow> <annotation encoding="application/x-tex"> 12 </annotation> </semantics> </math>12,用’D’表示 <math> <semantics> <mrow> <mn> 13 </mn> </mrow> <annotation encoding="application/x-tex"> 13 </annotation> </semantics> </math>13,用’E’表示 <math> <semantics> <mrow> <mn> 14 </mn> </mrow> <annotation encoding="application/x-tex"> 14 </annotation> </semantics> </math>14,用’F’表示 <math> <semantics> <mrow> <mn> 15 </mn> </mrow> <annotation encoding="application/x-tex"> 15 </annotation> </semantics> </math>15。
输入格式
输入包含两个整数 <math> <semantics> <mrow> <mi> N </mi> <mo> ( </mo> <mi> N </mi> <mo> ≤ </mo> <mn> 10000 </mn> <mo> ) </mo> </mrow> <annotation encoding="application/x-tex"> N(N \le 10000) </annotation> </semantics> </math>N(N≤10000) 和 <math> <semantics> <mrow> <mi> R </mi> <mo> ( </mo> <mn> 2 </mn> <mo> ≤ </mo> <mi> R </mi> <mo> ≤ </mo> <mn> 16 </mn> <mo> ) </mo> </mrow> <annotation encoding="application/x-tex"> R(2 \le R \le 16) </annotation> </semantics> </math>R(2≤R≤16)。
注意, <math> <semantics> <mrow> <mi> N </mi> </mrow> <annotation encoding="application/x-tex"> N </annotation> </semantics> </math>N 有可能是负整数。
输出格式
输出一行,表示转换后的数。
样例输入
23 12
样例输出
1B
题解
N 的 R 进制转换,核心就是对 R 不断取余,最后将取余结果逆转
#include<iostream>
#include<algorithm>
using namespace std;
char a[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
string trans(int N,int R){
if(N==0)
return "0";
if(N<0){
cout<<"-";
N = abs(N);
}
string str;
while(N){
str += a[N%R];
N /= R;
}
return str;
}
int main(){
int N;
int R;
cin>>N>>R;
string ans;
ans = trans(N,R);
reverse(ans.begin(),ans.end());
cout<<ans;
return 0;
}