题意
给一个n∗mn*mn∗m的矩形,求对角一刀切能切到的格子数。
思路
当我打了O(n)O(n)O(n)的算法后,发现显然的结论!!!
当n,mn,mn,m互质时,答案为n+m−1n+m-1n+m−1。
不互质时,我们可以分成若干个互质的矩形,这就利用到了GCDGCDGCD。
代码
#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);
}