题目

输入一个十进制数 <math> <semantics> <mrow> <mi> N </mi> </mrow> <annotation encoding="application&#47;x&#45;tex"> N </annotation> </semantics> </math>N,将它转换成 <math> <semantics> <mrow> <mi> R </mi> </mrow> <annotation encoding="application&#47;x&#45;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&#47;x&#45;tex"> 10 \le R \le 16 </annotation> </semantics> </math>10R16 的情况下,用’A’表示 <math> <semantics> <mrow> <mn> 10 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 10 </annotation> </semantics> </math>10,用’B’表示 <math> <semantics> <mrow> <mn> 11 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 11 </annotation> </semantics> </math>11,用’B’表示 <math> <semantics> <mrow> <mn> 11 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 11 </annotation> </semantics> </math>11,用’C’表示 <math> <semantics> <mrow> <mn> 12 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 12 </annotation> </semantics> </math>12,用’D’表示 <math> <semantics> <mrow> <mn> 13 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 13 </annotation> </semantics> </math>13,用’E’表示 <math> <semantics> <mrow> <mn> 14 </mn> </mrow> <annotation encoding="application&#47;x&#45;tex"> 14 </annotation> </semantics> </math>14,用’F’表示 <math> <semantics> <mrow> <mn> 15 </mn> </mrow> <annotation encoding="application&#47;x&#45;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&#47;x&#45;tex"> N(N \le 10000) </annotation> </semantics> </math>N(N10000) <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&#47;x&#45;tex"> R(2 \le R \le 16) </annotation> </semantics> </math>R(2R16)
注意, <math> <semantics> <mrow> <mi> N </mi> </mrow> <annotation encoding="application&#47;x&#45;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;
}

返回目录,查看更多