Skip to content

E02734: 十进制到八进制

stack, http://cs101.openjudge.cn/practice/02734/

把一个十进制正整数转化成八进制。

输入

一行,仅含一个十进制表示的整数a(0 < a < 65536)。

输出

一行,a的八进制表示。

样例输入

9

样例输出

11

要将一个十进制正整数转换为八进制,可以通过“除基取余法”实现。通过不断除以8并将余数压入栈中的方式来实现。然后,将栈中的元素依次出栈,构成八进制数的各个位。

python
decimal = int(input())  # 读取十进制数

# 创建一个空栈
stack = []

# 特殊情况:如果输入的数为0,直接输出0
if decimal == 0:
    print(0)
else:
    # 不断除以8,并将余数压入栈中
    while decimal > 0:
        remainder = decimal % 8
        stack.append(remainder)
        decimal = decimal // 8

    # 依次出栈,构成八进制数的各个位
    octal = ""
    while stack:
        octal += str(stack.pop())

    print(octal)