题目描述
给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
输入描述: 输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。
输出描述: 为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10 用A表示,等等)
示例:
输入: 7 2
输出: 111
解题思路
本题思路很简单,首先想清楚原理:N进制数,每个进制位的值分别是X0N0,X1*N1, X2N^2…,X0, X1,X2就是这些进制位的值,就是就是进行取模余数就是当前低进制的位的值是多少,通过除掉进制数,进 入下一个进制位的计算。
完整代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdlib.h>
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
int w, n;
cin >> w >> n;
vector<char> v;
string s = "0123456789ABCDEF";
bool flag = false;
if (w < 0)
{
w = 0 - w;
flag = true;
}
do
{
int b = w % n;
v.push_back(s[b]);
w = w / n;
} while (w > 0);
reverse(v.begin(), v.end());
if (flag)
cout << "-";
for (const auto&e : v)
{
cout << e;
}
system("pause");
return 0;
}
关注一下博主哦。。