将M进制的数转换为N进制的数

输入描述:

输入的第一行包括两个整数:M和N(2<=M,N<=36)。

下面的一行输入一个M进制的数X,现在要求你将M进制的数X转换成N进制的数输出。

输出描述:

输出X的N进制表示的数。

输入:

10 2

11

输出:

1011

分析:

通过十进制作为中间者,先把m进制转化为十进制,再将十进制转化为n进制。

代码示例:

#include<iostream>
#include<stack>
#include<string>
using namespace std;
int main() {
    int m, n;
    cin >> m >> n;
    long long  value = 0;
    string str;
    cin >> str;
    //将m进制转为十进制
    for (int i = 0; i < str.size(); ++i) {
        int cur = (str[i] >= '0' && str[i] <= '9') ? 
                      int(str[i] - '0') : int(str[i] - 'A' + 10);
        value = value * m + cur;
    }
    //十进制转为n进制
    stack<char> ans;
    while (value) {
        ans.push(value % n < 10 ? 
                 char((value % n) + '0') :
                 char((value % n) - 10 + 'A'));
        value = value/n;
    }
    while (!ans.empty()) {
        cout << ans.top();
        ans.pop();
    }
}
### 回答1: 将十进制M转换为N进制,可以采取如下的方法: 1. 将M除以N,得到商Q和余R。 2. 如果Q大于等于N,则重复1,直到Q小于N。 3.将所有余按逆序排列,得到的即为M转换为N进制。 例如,将十进制27转换为二进制: 27÷2=13余1 13÷2=6余1 6÷2=3余0 3÷2=1余1 1÷2=0余1 将所有余按逆序排列,即得到27的二进制表示为11011。 ### 回答2: 将十进制M转化为N进制的过程如下: 1. 首先,将M除以N,得到商Q1和余R1。 2. 将商Q1再次除以N,得到商Q2和余R2。 3. 重复以上步骤,直到商为0为止。每一步得到的余就是所求N进制的一位。 例如,将十进制M=255转化为二进制(N=2)的过程如下: 1. 255 ÷ 2 = 127 余 1 2. 127 ÷ 2 = 63 余 1 3. 63 ÷ 2 = 31 余 1 4. 31 ÷ 2 = 15 余 1 5. 15 ÷ 2 = 7 余 1 6. 7 ÷ 2 = 3 余 1 7. 3 ÷ 2 = 1 余 1 8. 1 ÷ 2 = 0 余 1 从最后一步开始,将每一步的余排列起来,即可得到M的二进制表示 11111111。 ### 回答3: 将十进制M转化为N进制的方法如下: 1. 首先,将M除以N,得到的商和余分别为Q1和R1。其中,R1即为M在N进制下的最低位。 2. 将Q1除以N,继续得到商Q2和余R2。同样,R2即为M在N进制下的次低位。 3. 以此类推,不断进行除法运算,直到商为0为止。每次得到的余即为M在N进制下的各位。 4. 将得到的各位按照从上到下的顺序排列,即可得到M的N进制表示。 举例说明:将十进制45转化为二进制。 首先,45除以2,商为22,余为1。所以45在二进制下的最低位为1。 接下来,22除以2,商为11,余为0。所以45在二进制下的次低位为0。 再继续进行除法运算,最终得到11除以2为5,余为1。所以45在二进制下的最高位为1。 由此可得,45在二进制下的表示为101101。 总结一下,将十进制M转化为N进制的步骤就是不断进行除法运算,将得到的余按照从下往上的顺序排列,即可得到M的N进制表示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~許諾~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值