[algorithm] 对角线经过的矩形数目

本文探讨了一个有趣的几何问题:如何计算一条从N*M个正方形组成的矩形左上角到右下角的对角线所穿过的正方形数量。通过分析不同比例的矩形,总结出一个通用公式,即M+N-最大公约数(M,N)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

博问里面的一个问题,有一点意思,小记录一下。

Problem


将N * M个边长为一的正方形拼成一个N* M的矩形( 每行M个小正方形,共N行 ),现在从矩形的左上角到右下角连一条线,求这条线“经过”多少个小正方形。其中,"经过"表示该线和小正方形有无穷多个交点,即恰好过一个顶点不算。第一行:T表示T组测试数据, T <= 100,接下来T行,每行N和M, N, M <= 10 ^ 4, 表示N * M个小正方形。对于每个测试数据输出一行,一个整数R,表示经过R个正方形。

Analysis


N*M(N行,M列)的矩形,内部是一个个的网格;

2*2:经过2个   3*2:经过4个 4*2:经过4个

2*3:经过4个   3*3:经过3个 4*3:经过6个

2*4:经过4个   3*4:经过6个 4*4:经过4个

2*5:经过6个   3*5:经过7个 4*5:经过8个

从以上的例子可以发现:

1: 如果M和N没有公约数,那么经过的正方形个数就是M+N-1

  画图看一下比较容易发现这一点,N*M一共含有N-1横边和M-1条竖边,左上角的一个矩形是一定经过的,之后对角线想要进入下一个矩形,必须要经过一条内部的边(横边或者竖边),一共经过经过N-1+M-1条内部边(因为每走一步必定经过一个边),也就是N-1+M-1个矩形加上最左上角的一个矩形,这就是N+M-1个矩形。

2:如果M和N有公约数,那么经过的正方形个数就是M+N-gcd(M,N)

    其实这种情况就是对角线经过正方形交点的情况,有多少个正方形的交点位于这条线上呢?一共是gcd(M,N)-1个点。首先把这条线稍微偏移一点来避开这些交点,根据1的分析,那么经过的矩形是M+N-1个;但是这种偏移会在每一个交点位置上添加一个经过的矩形,可以在纸上画一下,很好理解,因为一共有gcd(M,N)-1个交点,也就是多出了(M和N的最大公约数)-1个矩形。减掉这些多的矩形就可以得到实际经过的矩形数:

M+N-1-(gcd(M,N)-1) = M+N-gcd(M,N);

  1和2两种情况可以合并起来,经过的矩形数目是:M+N-gcd(M,N),问题转换为求M和N的最大公约数,简单很多了。

转载于:https://www.cnblogs.com/alex-tech/archive/2012/03/22/2410898.html

内容概要:本文深入探讨了金属氢化物(MH)储氢系统在燃料电池汽车中的应用,通过建立吸收/释放氢气的动态模型和热交换模型,结合实验测试分析了不同反应条件下的性能表现。研究表明,低温环境有利于氢气吸收,高温则促进氢气释放;提高氢气流速和降低储氢材料体积分数能提升系统效率。论文还详细介绍了换热系统结构、动态性能数学模型、吸放氢特性仿真分析、热交换系统优化设计、系统控制策略优化以及工程验证误差分析。此外,通过三维动态建模、换热结构对比分析、系统级性能优化等手段,进一步验证了金属氢化物储氢系统的关键性能特征,并提出了具体的优化设计方案。 适用人群:从事氢能技术研发的科研人员、工程师及相关领域的研究生。 使用场景及目标:①为储氢罐热管理设计提供理论依据;②推动车载储氢技术的发展;③为金属氢化物储氢系统的工程应用提供量化依据;④优化储氢系统的操作参数和结构设计。 其他说明:该研究不仅通过建模仿真全面验证了论文实验结论,还提出了具体的操作参数优化建议,如吸氢阶段维持25-30°C,氢气流速0.012g/s;放氢阶段快速升温至70-75°C,水速18-20g/min。同时,文章还强调了安全考虑,如最高工作压力限制在5bar以下,温度传感器冗余设计等。未来的研究方向包括多尺度建模、新型换热结构和智能控制等方面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值