学习Python从娃娃抓起!记录下蓝桥杯备考学习过程中的题目,记录每一个瞬间。
附上汇总贴:历年蓝桥杯Python青少组中/高级选拔赛(STEMA)真题解析 | 汇总
【题目描述】
有一个NM的矩形拼图积木板(1≤N≤M≤15,N和M为正整数),和若干个11、22、33…、10*10的正方形积木。使用任意积木将积木板铺满(不能有空隙),请问最少需要几块积木。
例如:N=3,M=4,最少需要4块积木(1块33,3块11)。
【输入】
输入两个正整数N和M(1≤N≤M≤15),表示矩形积木板的长和宽,正整数之间以一个空格隔开
【输出】
输出一个整数,表示铺满积木板最少需要的积木数量
【输入样例】
3 4
【输出样例】
4
【代码详解】
n, m = [int(i) for i in input().split()]
if n>m: # 先调整大小,保证n小于等于m
n,m = m,n
def calc(n, m):
ans = 0
while n!=m: # 当n与m不相等时
if n>m: # 调整大小
n, m = m, n
n = n # 小的那个边不变
m = m-n # 大的边长减去小的边长
ans+=1 # 增加1个积木
ans += 1 # 最后再加上n等于m的1个图形
return ans # 返回计算结果
if n==m and n<=10: # 对于n与m相等,且小于等于10的
print(1) # 只需1个积木
elif n==m and n>10: # 对于n与m相等,且大于10的
print(1 + calc(n-10, 10) + calc(m-10, n)) # 图形被拆成了3部分,分别计算
elif n>10 and m>10: # 对于n与m不相等,且大于10的
print(1+ calc(m-10, n) + calc(n-10, 10)) # 也被拆分3分布(同上一种情况)
elif n<=10 and m>10: # 对于m大于10的
print(1 + calc(m-10, n)) # 图形被拆成了2部分
else: # 其他(n和m都小于10,且不相等的)
print(calc(n, m))
【运行结果】
3 4
4