进制转换
通过模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; }