洛谷 P2241 统计方形Python题解

题解

  这道题放在了暴力枚举里面,说个实话为什么感觉就是数学问题呢?如果这道题要会做的话必须知道两个结论:
1. 对于一个长为n宽为m的格子来说,格子的矩形数为(长+1)*长/2)*((宽+1)*宽/2)
2. 对于不同边长来说正方形的个数为(n-i)*(m-i)

主要思路就是先求出矩形数,再求出正方形数,那么矩形数-正方形数=长方形数即可

n, m = map(int, input().split())
z = 0
# ((长+1)*长/2)*((宽+1)*宽/2)  就是求长*宽个格子里面多少矩形数  这个是数学公式
al = int(((n + 1) * n / 2) * ((m + 1) * m / 2))  # 这个地方不懂可以记住 所有的矩形数(长方形+正方形)
for i in range(0, min(n, m)):  # 找最小的边  这个地方的0其实就是边长为1的正方形 不就n*m吗  边长为2(假如n为2m为3)自己画一画 就是2个 就是(n - 1) * (m - 1)
    z += (n - i) * (m - i)  # 求正方形  也可以当成一个公式 
print(z, al - z)

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值