題目連結:
給定兩正整數 n 、 m (1 ≦ n 、 m ≦ 100, 000),代表有 n × m 棵植物種在標準座標平面上(1, 1)~(n, m)的格子點。
現在將這些植物從所在的座標位置連到(0, 0)。如果連線的中途(以下稱此線為 L )沒有碰到其他植物,則完整地蒐集能量。如果直線 L 在路上碰到了其他 k 棵,則總共會損失掉 2k + 1 的能量。
求總共會損失掉多少能量。
稍微觀察一下,可以看出這題其實就是在變相求最大公因數的和。
但是用雙層迴圈硬 A 會超時,需要更快的公式,如下:
但是因為我們要統計的是有多少棵樹(此數量為 k )擋住其他樹而消耗的能量值,從上式我們可以知道 k 的數目(但是有多算,要扣掉)。因此我們的答案應為:
2k - m × n
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。