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