进制转换
通过模N除N可以按N进制一位一位取下来,并去arr里面找对应的字符串加起来。
需要考虑到M为负数的情况,M为0的情况。
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
static string arr = "0123456789ABCDEF";
int main()
{
long M;
int N;
while(cin >> M >> N) // 多组输入
{
bool flag = true; // 默认为正
if(M < 0) // M为负数时,需要将M变为正数这样去取模时才不会出错
flag = false, M = -M;
string ret;
while(M)
{
int tmp = M % N;
M = M / N;
ret += arr[tmp]; // 倒着加上去的 最后再翻转回来
}
if(ret == "") // 说明while没有进去 也就是M是0
ret += "0";
if(flag == false) // 考虑负数 同样先加到后面再逆置回来
ret += "-";
reverse(ret.begin(), ret.end());
cout << ret << endl;
}
return 0;
}

京公网安备 11010502036488号