蓝桥杯 | 纸张尺寸 问题 | python
问题描述
在 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
94
运行限制
最大运行时间:1s
最大运行内存: 512M
- 自己解决
import os
import sys
# 请在此输入您的代码
s=input()
a=[]
l=1189
w=841
for i in range(11): # len(a)=11
if l>w:
a.append(l)
# a.append(w)
l=l//2
else:
a.append(w)
# a.append(l)
w=w//2
'''
print(a)
[1189, 841, 594, 420, 297, 210, 148, 105, 74, 52, 37]
'''
for i in range(10): # 名称一定是 A0、A1、A2、A3、A4、A5、A6、A7、A8、A9 之一
if int(s[1])==i:
# print(a[2*i])
# print(a[2*i+1])
print(a[i]) # 输出长边的长度
print(a[i+1]) # 输出短边的长度
- 官方题解
import os
import sys
# 请在此输入您的代码
x = int(input()[1])
a, b = 1189, 841 # 维护长边长度a和短边长度b
# 输入A0,a=1189,b=841
# 输入Ax,根据x循环x次(对折x次)
for i in range(x):
# 也可以直接a,b=b,a//2
a //= 2 # 每次让长边a除以2(向下取整),短边b不变
if a < b: # 再根据a,b的大小关系进行调整
a, b = b, a # 让a永远表示长边,让b永远表示短边
print(a)
print(b)