1076. 进制转换
题目描述
用递归算法将一个十进制数X(1<=X<=109)转换成任意进制数M(2<=M<=16)。
输入
一行两个正整数X和M。
输出
输出X的M进制的表示。
样例输入
31 16
样例输出
1F
数据范围限制
C++代码
#include <iostream>
#include <vector>
#include <iterator>
#include <cassert>
using namespace std;
const char cNumeration[17] = "0123456789ABCDEF";
vector<char> M_digits_vec;
void DecimalConversion(int number, int numeration)
{
if (0 == number)
{
return;
}
else
{
M_digits_vec.push_back(cNumeration[number%numeration]);
DecimalConversion(number/numeration, numeration);
}
}
int main()
{
int X, M;
cin >> X >> M;
assert(M>=2 && M<=16);
#ifdef UNIT_TEST
while(X > 0)
{
M_digits_vec.push_back(cNumeration[X%M]);
X /= M;
}
#else
DecimalConversion(X, M);
#endif
copy(M_digits_vec.rbegin(), M_digits_vec.rend(), ostream_iterator<char>(cout));
cout << endl;
return 0;
}