题解:CSP-J | B2143 进制转换
B2143 进制转换 题目描述 用递归算法将一个十进制整数 $X$($1 \le X \le 10^9$)转换成任意进制数 $M$($2\le M\le16$,$M$ 为整数)。 输入格式 一行两个数,第一个十进制整数 $X$,第二个为进制 $M$。 输出格式 输出结果。 输入输出样例 #1 输入 #
·
B2143 进制转换
题目描述
用递归算法将一个十进制整数 $X$($1 \le X \le 10^9$)转换成任意进制数 $M$($2\le M\le16$,$M$ 为整数)。
输入格式
一行两个数,第一个十进制整数 $X$,第二个为进制 $M$。
输出格式
输出结果。
输入输出样例 #1
输入 #1
31 16
输出 #1
1F
说明/提示
样例解释。
将十进制 $31$ 转化为十六进制数。
【题解】
如题本题采用递归形式进制转换。
前置知识:短除法。
分析:
通过短除法取余数,再将余数倒序输出即可。
对于倒序输出,可以在递归的时候,最后输出余数,这样余数就会倒序输出了。
注意,十进制下除以大于等于 10 的数会出现两位数的情况,所以需要一个字符串来转换成对应的字母。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
string c="0123456798ABCDEF";//对应字符。
void f(int x,int m){
if(x/m) f(x/m,m);//继续递归。
cout<<c[x%m];//倒序输出。
}
int main(){
int x,m;
cin>>x>>m;//输入。
f(x,m);//递归。
return 0;
}
更多推荐



所有评论(0)