输入十进制整数N和待转换的进制x(2、8、16),分别代表十进制N转换成二进制、八进制和十六进制,输出对应的结果。十六进制中A~F用大写字母表示。

输入格式:

输入两个整数N(十进制整数N)和x(x进制),中间用空格隔开。

输出格式:

输出对应的结果。

输入样例:

1
123 2

输出样例:

1
1111011

输入样例:

1
123 16

输出样例:

1
7B

思路

利用辗转相除法进行进制转换,使用stack来存得到的结果,注意转换为16进制时,从10开始为A。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <stack>
using namespace std;
int n, x;
int main() {
cin >> n >> x;
stack<int> s;
do {
s.push(n % x);
n /= x;
} while (n);
while (!s.empty()) {
if (s.top() >= 0 && s.top() < 10) {
cout << s.top();
} else {
cout << (char)(s.top() - 10 + 'A');
}
s.pop();
}
return 0;
}