题意
给一个 n ∗ m n*m n∗m的矩形,求对角一刀切能切到的格子数。
思路
当我打了
O
(
n
)
O(n)
O(n)的算法后,发现显然的结论!!!
当
n
,
m
n,m
n,m互质时,答案为
n
+
m
−
1
n+m-1
n+m−1。
不互质时,我们可以分成若干个互质的矩形,这就利用到了 G C D GCD GCD。
代码
#include<cstdio>
#include<algorithm>
int n, m;
int main() {
scanf("%d %d", &n, &m);
int k = std::__gcd(n, m);
printf("%d", (n / k + m / k - 1) * k);
}