目录
牛客_DD5 进制转换
解析代码
本题题目很简单,题目的本意就是将10进制的数转换成N进制。N(2 ≤ N ≤ 16)可以看出进制最多可以到16进制。 首先想清楚原理:N进制数,每个进制位的值分别是X0*N^0,X1*N^1, X2*N^2.....,X0, X1,X2就是这些进制位的值,就是就是进行取模余数就是当前低进制的位的值是多少,通过除掉进制数,进入下一个进制位的计算。
#include <algorithm>
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main()
{
int m = 0, n = 0;
cin >> m >> n;
if (m == 0)
{
cout << 0;
return 0;
}
string ret = "", str = "0123456789ABCDEF";
bool flag = false;
if (m < 0)
{
m = -m;
flag = true;
}
while (m > 0)
{
ret += str[m % n];
m /= n;
}
if (flag)
ret += '-';
reverse(ret.begin(), ret.end());
cout << ret;
return 0;
}