| Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|
| 85176 | sh25_wangtaojie | 2的幂次方表示 | Python3 | 解答错误 | 32 MS | 3728 KB | 1788 | 2026-03-06 15:27:18 |
def get_binary_representation(n): """获取数字n的二进制表示中为1的位数索引列表(从低位到高位)""" binary_bits = [] bit_position = 0 while n > 0: if n & 1: # 检查最低位是否为1 binary_bits.append(bit_position) n >>= 1 # 右移一位 bit_position += 1 return binary_bits def format_power_of_two(exponent): """格式化2的指数表示""" if exponent == 0: return "2(0)" elif exponent == 1: return "2" else: # 递归处理指数部分 return "2(" + transform_to_power_form(exponent) + ")" def transform_to_power_form(n): """将正整数n转换为2的幂次方表示形式""" if n == 0: return "0" elif n == 1: return "2(0)" elif n == 2: return "2" # 获取二进制表示中为1的位数 exponents = get_binary_representation(n) # 从高到低排序,使表达式符合习惯 exponents.sort(reverse=True) # 构建表达式 terms = [] for exp in exponents: terms.append(format_power_of_two(exp)) return "+".join(terms) def main(): """主函数:读取输入并输出2的幂次方表示""" try: n = int(input().strip()) if n <= 0: print("输入必须为正整数") return if n > 20000: print("输入超出范围(≤20000)") return result = transform_to_power_form(n) print(result) except ValueError: print("请输入有效的正整数") except Exception as e: print(f"程序执行出错: {e}") if __name__ == "__main__": main()