算法题——立方体的体对角线穿过多少个正方体?

简介: 这道题是笔者当年参加竞赛的题目,多年来一直未得其解,久久不能释怀。近日,重新拿起该题细细研究,终于将其解出,著文以记之。   问题描述: 长方体长X,宽Y,高Z。X、Y、Z都是正整数。长方体由长1、宽1、高1的正方体堆积而成。

这道题是笔者当年参加竞赛的题目,多年来一直未得其解,久久不能释怀。近日,重新拿起该题细细研究,终于将其解出,著文以记之。

 

问题描述:

长方体长X,宽Y,高Z。X、Y、Z都是正整数。长方体由长1、宽1、高1的正方体堆积而成。那么长方体的体对角线穿过多少个正方体?

 

这个题考量三维空间的想象。近日研究的时候,尝试先考量二维的情况,在求解出二维的情况下,在推广到三维里。下面是二维情况下的问题描述

 

长方形长X,宽Y。X、Y都是正整数。长方形由长1、宽1的正方形组成。那么长方形的对角线穿过多少个正方形?

 

 

以实例说明。长方形长6,宽4。长方形由长1、宽1的正方形组成。那么长方形的对角线穿过多少个正方形?

这个还是比较简单的,直接用图表示即可,如下图所示:

 

1

 

如上图所示,对角线一共穿过8个正方形(灰色部分)。但是,我们不可能每个问题都画图表示,比如长777,宽581的长方形的解就很难画图表示(数字太大,不容易精确表示)。

仔细看看,这8个正方形实际上把对角线分成了8段。线段的端点是对角线和水平线(或竖直线)的交点。

于是,问题似乎可以转化成

要求穿过多少个正方形,实际上相当于求有多少个线段

要求有多少个线段,实际上相当于求对角线和水平线和垂直线的交点的个数

 

把上图放在平面直角坐标系中,左下角坐标为(0,0),右上角坐标为(6,4)

则对角线的直线方程为

 

clip_image002

 

和我们一般想象中的直线方程不太一样。没关系,首先这个是正确的直线方程,其次是为了和后面的三维中的直线方程的表现形式统一。

我们把对角线和水平线(或竖直线)的交点在图上标示出来(为了后文的描述方便,我用不同颜色标示点)

 

2

左下角的起点用灰色标示,红色的点标示对角线和竖直线的交点(交点的横坐标是整数),绿色的点标示对角线和水平线的交点(交点的纵坐标是整数)

起点不算,则穿过的方块数和线段数和点的个数一致(都是8个)。

 

红色点的坐标(横坐标是整数)分别是:

clip_image002[4]

个数和长方形的长的数值是一致的(是6)

 

绿色点的坐标(纵坐标是整数)分别是:

clip_image002[6]

个数和长方形的宽的数值是一致的(是4)

 

可以看出,红色点和绿色点有2个点是重合的(图上用半红半绿的点标示),因此这些点合在一起就是如下(按照和起点的远近来进行排序)

clip_image002[8]

 

于是该问题的求解过程可以如下表示:

1、求出横坐标是整数的点的个数,就是长方形长的数值。本题是6

2、求出纵坐标是整数的点的个数,就是长方体宽的数值。本题是4

3、求出步骤1和步骤2中重合的点的个数,也就是横纵坐标都是整数的点的个数。本题是2

4、问题的答案:步骤1的答案+步骤2的答案-步骤3的答案。本题是6+4-2=8

 

步骤1、2、3、4中,关键是步骤3,如何求出步骤1和步骤2中重合的点的个数,也就是横纵坐标都是整数的点的个数。

 

最大公约数:正整数a和b,若a能被b整除,则a是b的倍数,b是a的约数。正整数a和b中约数最大的那个称为a和b的最大公约数,记作gcd(a,b)

 

本题中,(4,6)=2,正好是步骤3的答数,是巧合么?不是,接下来我们来证明。

 

证明:长X、宽Y的长方形,对角线经过双整数点(横纵坐标都是整数)的个数为gcd(X,Y)(注:不算起点)

证:令x1=X/gcd(X,Y),y1=Y/gcd(X,Y)。则x1和y1都是整数,且x1和y1互质(除1以外,没有公约数)。

对角线所在的直线方程为

clip_image002

当x取整数时(1≤x≤X)时,要使y也是整数,则x必须取x1的倍数(这样才能把分母完全约掉)

而在1到X之间,x1的倍数一共有gcd(X,Y)个

证明完毕

 

综上所述:长方形长X,宽Y。X、Y都是正整数。长方形由长1、宽1的正方形组成。那么长方形的对角线穿过多少个正方形?

其解为:Ans=X+Y-gcd(X,Y),可以用下图表示

3

 

例如:

长6,宽4的长方形的对角线穿过6+4-gcd(6,4)=6+4-2=8个正方形

长5,宽3的长方形的对角线穿过5+3-gcd(5,3)=5+3-1=7个正方形

长12,宽8的长方形的对角线穿过12+8-gcd(12,8)=12+8-4=16个正方形

 

扩展到三维。长方体长X,宽Y,高Z。X、Y、Z都是正整数。长方体由长1、宽1、高1的正方体堆积而成。那么长方体的体对角线穿过多少个正方体?

长X、宽Y、高Z的立方体的体对角线的直线方程是

clip_image002[5]

这个方程虽然有点怪,但是学过空间解析几何的都明白这个方程的正确性

 

求解的过程和二维的类似,也是找寻坐标是整数的点。可以用下图表示:

4

 

 

其解为:Ans=X+Y+Z-gcd(X,Y)-gcd(X,Z)-gcd(Y,Z)+gcd(X,Y,Z)

例如:

长5,宽3,高4的长方体的体对角线穿过5+3+4-gcd(5,3)-gcd(5,4)-gcd(3,4)+gcd(5,3,4)=5+3+4-1-1-1+1=10个正方体

长8,宽6,高3的长方体的体对角线穿过8+6+3-gcd(8,6)-gcd(8,3)-gcd(6,3)+gcd(8,6,3)=8+6+3-2-1-3+1=12个正方体

长12,宽8,高6的长方体的体对角线穿过12+8+6-gcd(12,8)-gcd(12,6)-gcd(8,6)+gcd(12,8,6)=12+8+6-4-6-2+2=16个正方体

 

 

下图是长5,宽3,高4的长方体的体对角线穿过正方体的示意图,一共10个正方体,你看清了么?

3-4-5

 

 

 

这个题历时若干年,总是百思不得其解。也是今朝灵光一闪,终于把该题解决了。也总算是一块石头落了地

相关文章
|
11月前
|
Linux Python
Anaconda和Miniconda在Linux系统下迁移虚拟环境
将A服务器的Miniconda虚拟环境loonflow3通过`conda list --explicit`导出配置,并打包env目录为tar.gz文件,使用scp传输至B服务器后解压至对应路径,再激活环境即可完成迁移。
811 5
|
3月前
|
运维 安全 API
用云新范式:Qoder Cloud Agents × Alibaba Cloud Skills
Cloud Use——让“用云”不再必须有人在场。一次派活,云上闭环:让 Agent 以机器身份,安全、完整地把云用起来。
|
6月前
|
iOS开发 开发者
ios开发打包的ipa文件无法安装的解决方案
iOS开发中,若IPA无法安装,通常因误打了App Store格式包。需用Ad Hoc签名(绑定测试机UDID)重新打包。安装方式:① iTunes数据线安装;② 上传至yunedit生成下载页,微信分发——后者更高效便捷。
|
机器学习/深度学习 人工智能 自然语言处理
三行代码实现实时语音转文本,支持自动断句和语音唤醒,用 RealtimeSTT 轻松创建高效语音 AI 助手
RealtimeSTT 是一款开源的实时语音转文本库,支持低延迟应用,具备语音活动检测、唤醒词激活等功能,适用于语音助手、实时字幕等场景。
3563 18
三行代码实现实时语音转文本,支持自动断句和语音唤醒,用 RealtimeSTT 轻松创建高效语音 AI 助手
|
存储 前端开发 UED
HTML中的<img>标签使用指南
HTML中的<img>标签使用指南
3184 3
|
存储 芯片
STM32入门开发: 采用IIC硬件时序读写AT24C08(EEPROM)
STM32入门开发: 采用IIC硬件时序读写AT24C08(EEPROM)
1263 0
STM32入门开发: 采用IIC硬件时序读写AT24C08(EEPROM)
|
关系型数据库 MySQL 数据库
使用 Docker Compose 部署 MySQL 8.0
大家好!今天我们来讨论一下如何使用 Docker Compose 部署 MySQL 8.0。Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具,它使得管理和部署复杂的应用程序变得更加简单。
3724 0
使用 Docker Compose 部署 MySQL 8.0
|
算法 Java C++
非启发式算法——二分、三分搜索算法
非启发式算法——二分、三分搜索算法
725 0
西门子S7-1200 CPU面板介绍,S7-1200 CPU的扩展能力
本篇我们来介绍西门子S7-1200 CPU的面板,以及S7-1200 CPU的扩展能力。
西门子S7-1200 CPU面板介绍,S7-1200 CPU的扩展能力
|
测试技术 数据库
测试用例(包含测经典试点全集图解,强烈建议保存收藏)(一)
测试用例(Test Case)是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。简单地认为,测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。
1470 1
测试用例(包含测经典试点全集图解,强烈建议保存收藏)(一)