题目描述
用递归算法将一个十进制数 XX 转换成任意进制数 M(M≤16)。
输入格式
一行两个数,第一个十进制数 X,第二个为进制 M。
输出格式
输出结果。
输入输出样例
输入
31 16
输出
1F
说明/提示
样例解释。
将十进制 31 转化为十六进制数。
如题本题采用递归形式进制转换。
前置知识:短除法。
分析:
- 通过短除法取余数,再将余数倒序输出即可。
- 对于倒序输出,可以在递归的时候,最后输出余数,这样余数就会倒序输出了。
- 注意,十进制下除以大于等于 1010 的数会出现两位数的情况,所以需要一个字符串来转换成对应的字母。
#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;
}