【牛客网】进制转换oj

题目描述:给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
输入描述:
输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。
输出描述:
为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)
示例1
输入
7 2
输出
111

方法:

除以N得到的余数就是了。
例如7这个十进制的数,除以2的余数是1商是3,这样二进制最后一位就是1,然后用3再除以2,然后得到余数1,商是1,这样的话,二进制就是111了。
同理,10可以这样除以2的话,就先得到余数是0和商是5,然后5就得到余数是1商是2,然后2除以2就得到余数是0商是1,这样的话,就得到1010这个二进制数了。

#include<iostream>
using namespace std;

int main()
{
    //s表示通过进制转换后M的N进制数
    string s = "";
    string tables = "0123456789ABCDEF";//从二进制到十六进制的数的集合

    //输入某个数M,和需要转换的进制N
    int M = 0;
    int N = 0;
    cin >> M >> N;

    if (M == 0)
    {
        s = "0";
    }

    while (M)
    {
        if (M < 0)
        {
            M = -M;
            cout << "-";
        }

        s = tables[M%N] + s;
        M /= N;
    }
 cout << s.c_str() << endl;
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值