| Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|
| 85162 | sh25_wangtaojie | Pell数列-递归 | Python3 | 通过 | 27 MS | 3708 KB | 1554 | 2026-03-06 15:20:37 |
def pell_number(k): """ 计算Pell数列第k项模32767的值 Pell数列定义: a1=1, a2=2, an=2*an-1+an-2 (n>2) Args: k: 正整数,表示要计算的项数 Returns: 第k项Pell数模32767的值 """ MOD = 32767 # 处理边界情况 if k == 1: return 1 % MOD if k == 2: return 2 % MOD # 使用动态规划计算,只保存前两项以节省空间 prev2 = 1 # a1 prev1 = 2 # a2 # 从第3项开始计算到第k项 for i in range(3, k + 1): current = (2 * prev1 + prev2) % MOD prev2 = prev1 prev1 = current return prev1 def main(): """ 主函数:处理多组测试数据,计算每组Pell数列的值 """ try: # 读取测试数据组数 test_count = int(input()) # 处理每组测试数据 for _ in range(test_count): # 读取要计算的项数 position = int(input()) # 验证输入范围 if position < 1: print("输入必须为正整数") continue # 计算并输出结果 result = pell_number(position) print(result) except ValueError: print("输入格式错误,请输入有效的整数") except Exception as e: print(f"程序执行出错: {e}") if __name__ == "__main__": main()