题目:给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数。
输入描述:
输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。
输出描述:
为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10
用A表示,等等)
示例1:
输入
7 2
输出
111
分析:
将一个十进制数M转换成N进制数,就是用M模N取到对应的最后一位,然后M除以N就去掉一位,继续进行下一位...直到M为0、因为N进制的数就是0~N-1,因此模N就是拿到对应位。
void radix_reverse()
{
//由于N的取值范围是2~16
string ret;
string table("0123456789ABCDEF");
int M;
int N;
cin >> M >> N;
int flag = 1;//默认是正数
if (M < 0)//假如是负数
{
flag = 0;
M = -M;
}
while (M)
{
ret += table[M%N];
M /= N;
}
if (flag == 0)//是负数
{
ret += '-';
}
//得反转一下字符串(之前是从后到前倒着存的)
reverse(ret.begin(), ret.end());
cout << ret << endl;
}