一本通 例6.8 进制转换
时间: 2023-07-28 12:07:01 浏览: 106
进制转换实例
题目描述:
输入两个正整数 $a$ 和 $n$,将 $a$ 转换为 $n$ 进制数输出。
输入格式:
输入共两行,第一行包含两个正整数 $a$ 和 $n$,分别表示十进制整数和目标进制数 $(2≤n≤16)$。
第二行为 $a$ 的 $10$ 进制表示,$a$ 是一个非负整数,且不超过 $2^{31}-1$。
输出格式:
输出 $a$ 的 $n$ 进制表示。
注意:输出的每个字符必须是大写字母。如果 $a$ 为 $0$,输出 $0$。
输入样例:
10 2
7
输出样例:
$111$
算法1:
将十进制转为目标进制,按照取余数的方法,将余数从后向前排列即可。
C++ 代码:
```cpp
#include <iostream>
#include <stack>
using namespace std;
stack<int> s;
int main()
{
int a, n;
cin >> a >> n;
if (a == 0)
{
cout << 0 << endl;
return 0;
}
while (a)
{
s.push(a % n);
a /= n;
}
while (!s.empty())
{
int t = s.top();
if (t < 10) cout << t;
else cout << char(t - 10 + 'A');
s.pop();
}
return 0;
}
```
Python 代码:
```python
a, n = map(int, input().split())
if a == 0:
print(0)
else:
s = []
while a:
s.append(a % n)
a //= n
s.reverse()
for x in s:
if x < 10:
print(x, end="")
else:
print(chr(ord('A') + x - 10), end="")
```
时间复杂度:$O(log_2 a)$
空间复杂度:$O(log_2 a)$
阅读全文