矩形的對角線經過的小方格數量

2021-09-26 20:06:04 字數 1979 閱讀 6039

前兩天數學建模校內選拔賽的題目中,有一問是讓求出最短路徑以及經過的方格數,而最短路徑是很多段折線,需要計算每段折線經過的方格數再加起來。

本來打算直接在程式裡加幾行**計算的,後來發現可以直接推導出結論:

對於乙個長度為m

mm,寬度為n

nn的矩形,均分成m∗n

m*nm∗

n個小方格,則對角線經過的小方格數量為m+n

−(m,

n)m+n-(m,n)

m+n−(m

,n),其中(m,

n)(m,n)

(m,n)為m

mm和n

nn的最大公約數。

證明:①先考慮m

mm和n

nn互質的情況,即(m,

n)=1

(m,n)=1

(m,n)=

1時,由於對角線的斜率為k=n

mk=\frac

k=mn

​為既約分數,顯然對角線除了兩個端點外不會經過內部格點。

而對角線與m+1

m+1m+

1條豎直線有m+1

m+1m+

1個交點,與n+1

n+1n+

1條水平線有n+1

n+1n+

1個交點,由於對角線的兩個端點被重複計算,所以對角線與所以格線共有m+1

+n+1

−2=m

+nm+1+n+1-2=m+n

m+1+n+

1−2=

m+n個交點。

而這m +n

m+nm+

n個交點將對角線分為m+n

−1m+n-1

m+n−

1段,每一小段都與包含它的小方格一一對應,所以對角線共經過了m+n

−1m+n-1

m+n−

1個小方格。

②再考慮m

mm和n

nn不互質的情況,即(m,

n)=d

>

1(m,n)=d>1

(m,n)=

d>

1時,由於對角線的斜率為k=n

m=n/

dm/d

k=\frac=\frac

k=mn​=

m/dn

/d​,所以對角線一共經過了d

dd個長為m

d\frac

dm​,寬為n

d\frac

dn​的小矩形。取長為m

d\frac

dm​,寬為n

d\frac

dn​的小矩形作為研究物件,每乙個小矩形都是長寬互質的。使用①中的結論,對角線在每個小矩形中經過的小方格數為md+

nd−1

\frac+\frac-1

dm​+dn

​−1,所以一共經過了d∗(

md+n

d−1)

=m+n

−dd*(\frac+\frac-1)=m+n-d

d∗(dm​

+dn​

−1)=

m+n−

d個小方格。

綜合①②,對於乙個長度為m

mm,寬度為n

nn的矩形,均分成m∗n

m*nm∗

n個小方格,則對角線經過的小方格數量為m+n

−(m,

n)m+n-(m,n)

m+n−(m

,n),其中(m,

n)(m,n)

(m,n)為m

mm和n

nn的最大公約數。

對角線的延伸

今天有點空閒時間,把劉未鵬的 康托爾 哥德爾 圖靈 永恆的金色對角線 又看了一遍。雖然之前看過很多遍了,也在斷斷續續地看 geb 但是每次看這篇文章,都還會引起一些思考。開始先介紹了圖靈停機問題和y combinator,這兩段都總結的很好,深入淺出,比我在別的地方看到的要清楚很多。後面介紹了哥德爾...

同行列對角線的格仔

描述 輸入三個自然數n,i,j 1 i n,1 j n 輸出在乙個n n格的棋盤中 行列均從1開始編號 與格仔 i,j 同行 同列 同一對角線的所有格仔的位置。如 n 4,i 2,j 3表示了棋盤中的第二行第三列的格仔,如下圖 當n 4,i 2,j 3時,輸出的結果是 2,1 2,2 2,3 2,4...

同行列對角線的格仔

時間限制 1 sec 記憶體限制 128 mb 提交 14 解決 6 提交 狀態 討論版 輸入三個自然數n,i,j 1 i n,1 j n 輸出在乙個n n格的棋盤中 行列均從1開始編號 與格仔 i,j 同行 同列 同一對角線的所有格仔的位置。如 n 4,i 2,j 3表示了棋盤中的第二行第三列的格...