首页 > 其他 > 详细

牛客网——数制转换

时间:2018-12-28 21:49:06      阅读:279      评论:0      收藏:0      [点我收藏+]

题目描述

    求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。     不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F)。

输入描述:

    输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2 =< a,b <= 16。
    数据可能存在包含前导零的情况。

输出描述:

    可能有多组测试数据,对于每组数据,输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,...,9,A,B,...,F)。

链接:https://www.nowcoder.com/questionTerminal/8ef02ef8571b417d8c311a87861f7a03
来源:牛客网

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    int sum = 0, a, b;
    string n;
    int t = 49;
    int temp[50] = {0};
    cin >> a >> n >> b;//输入信息
    for (int i = 0; i < n.size(); i++)//转换为十进制
    {
        if (n[i] >= 0 && n[i] <= 9)
            sum = sum * a + n[i] - 0;
        else if (n[i] >= a && n[i] <= z)
            sum = sum * a + n[i] - a + 10;
        else if (n[i] >= A && n[i] <= Z)
            sum = sum *a + n[i] - A + 10;
    }
    while(sum > 0)//转换为b进制
    {
        temp[t--] = sum % b;
        sum /= b;
    }
    for (int i = t + 1; i < 50; i++)//输出
    {
        if (temp[i] >= 10)
        {
            cout << char(A + temp[i] - 10);
        }
        else
            cout << temp[i];
    }
    cout << endl;
    return 0;
}

 

牛客网——数制转换

原文:https://www.cnblogs.com/JAYPARK/p/10192932.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!