历年蓝桥杯Python青少组中/高级选拔赛(STEMA)真题解析 | 2023年2月编程题(9)

文章讲述了使用Python解决一个涉及矩形积木填充的最小积木数量问题,通过实例和代码展示了算法思路。
摘要由CSDN通过智能技术生成

学习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
  • 20
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值