题目描述
给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
输入描述:
输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。
输出描述:
为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)
示例1
输入
7 2
输出
111
思路
- 首先写一个字符串存入可能会出现的数字
- 如果是负数的话,我先输出一个 - 号,在将其转换成正数
- 再不断的 % 与 / 得到每一位上的数字(此时字符串中存入的数字是逆向的)
- 可以按照此代码从后往前打印,或者
#include<algorithm>
利用里面的reverse函数,将字符串反转,再打印
代码解答:
#include <iostream>
#include <string>
using namespace std;
int main() {
string res, table = "0123456789ABCDEF";
int M, N;
cin >> M >> N;
if (M < 0) {
cout << '-';
M = 0 - M;
}
while (M) {
res.push_back(table[M % N]);
M /= N;
}
for (auto i = res.size(); i > 0; i--) {
cout << res[i - 1];
}
return 0;
}
代码生成图:
如有不同见解,欢迎留言讨论~~