【牛客网】进制转换

    xiaoxiao2023-11-02  157

    题目描述

    给定一个十进制数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; }

    关注一下博主哦。。

    最新回复(0)