- 情况1:当墙壁长宽相等时()交点数 = 如果 或 是偶数,需要减去1(因为对角线会重合)
- 情况2:当墙壁长宽不等时()基础交点数 = 需要减去 如果 或 是偶数,同样需要减去1
#include <bits/stdc++.h> using namespace std; using LL = long long; int main() { LL a, b, x, y; cin >> a >> b >> x >> y; LL ans = 0; auto g = gcd(x, y); x /= g; y /= g; if (a == b) { ans = a + 1 + b + 1; if (a % 2 == 0 || b % 2 == 0) ans--; } else { ans = (a + 1) * 2 + (b + 1) * 2 - 2 * (gcd(a, b) + 1); if (a % 2 == 0 || b % 2 == 0) ans--; } cout << ans << endl; }