1. 题目:
在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm
841mm, 将 A0 纸 沿长边对折后为 A1 纸, 大小为 841mm
594mm, 在对折的过程中长度直接取 下整 (实际裁剪时可能有损耗)。将 A1 纸沿长边对折后为 A2 纸, 依此类推。
输入纸张的名称, 请输出纸张的大小。
输入格式
输入一行包含一个字符串表示纸张的名称, 该名称一定是 A0、A1、A2、 A3、A4、A5、A6、A7、A8、A9 之一。
输出格式
输出两行,每行包含一个整数,依次表示长边和短边的长度。
样例输入1
A0
样例输出1
1189
841
样例输入 2
A1
样例输出 2
841
594
2. 我的代码:
import os import sys # 请在此输入您的代码 # 获取数字 num = int(input()[-1]) # dp下标表示纸张型号 dp = [[0, 0] for _ in range(num + 1)] # 初始化 dp[0] = [1189, 841] for i in range(1, num + 1): dp[i][0] = dp[i - 1][1] dp[i][1] = dp[i - 1][0] // 2 print(dp[-1][0]) print(dp[-1][1])
动态规划,dp数组下标代表的是:纸张的版式,比如0代表A0、1代表A1。dp数组代表的是:长和宽,一个一维数组,第一个元素表示长、第二个元素表示宽。
递推公式:长度等于上一个宽:dp[i][0] = dp[i - 1][1]
;宽度等于上一个长除以2:dp[i][1] = dp[i - 1][0] // 2