问:
  • 板块灌水区
  • 楼主EARS_CHEN
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/6/2 11:52
  • 上次更新2024/6/2 14:47:36
查看原帖
问:
1080324
EARS_CHEN楼主2024/6/2 11:52

给定一个二进制整数 n 与 整数 x。将 n 转为 x 进制,若 x 超过 10,则用 A 表示 10,B 表示 11 ...... Z 表示 35。

输入格式

在一行中输入两个整数 n,x(0≤n≤2 31 −1,2≤x≤26),分别表示二进制数与待转的进制,其中 n 是以二进制的方式给出。

输出格式

在一行中输出,n 转 x进制后的结果。

样例组

输入#1

11101 16

输出#1

1D

以下是我的代码,测试点只有最后一个没有过啊?

#include <iostream>
#include <sstream>
#include <string>
using namespace std;

int main()
{
    string n;
    int x;
    cin >> n >> x;

    
    int decimal = 0;
    for (int i = 0; i < n.size(); i++)
    {
        decimal = decimal * 2 + (n[i] - '0');
    }

    string result = "";
    while (decimal != 0)
    {
        int mod = decimal % x;
        if (mod < 10)
        {
            result += mod + '0';
        }
        else
        {
            result += mod - 10 + 'A';
        }
        decimal /= x;
    }

   
    for (int i = result.size() - 1; i >= 0; i--)
    {
        cout << result[i];
    }

    return 0;
}
2024/6/2 11:52
加载中...