题目描述:给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
输入描述:
输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。
输出描述:
为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)
示例1
输入
7 2
输出
111
方法:
除以N得到的余数就是了。
例如7这个十进制的数,除以2的余数是1商是3,这样二进制最后一位就是1,然后用3再除以2,然后得到余数1,商是1,这样的话,二进制就是111了。
同理,10可以这样除以2的话,就先得到余数是0和商是5,然后5就得到余数是1商是2,然后2除以2就得到余数是0商是1,这样的话,就得到1010这个二进制数了。
#include<iostream>
using namespace std;
int main()
{
//s表示通过进制转换后M的N进制数
string s = "";
string tables = "0123456789ABCDEF";//从二进制到十六进制的数的集合
//输入某个数M,和需要转换的进制N
int M = 0;
int N = 0;
cin >> M >> N;
if (M == 0)
{
s = "0";
}
while (M)
{
if (M < 0)
{
M = -M;
cout << "-";
}
s = tables[M%N] + s;
M /= N;
}
cout << s.c_str() << endl;
return 0;
}