CF1200C Round Corridor 题解
Doveqise
2019-08-12 21:24:38
这道题 一道数论题(小学奥数题)
我们通过看图 发现在12点方向以外,gcd(n,m)的整数倍地方有大墙
所以我们可以把内圈分成n/gcd(n,m)块,外圈分成m/gcd(n,m)块
然后判断两点是否在同一块内
暴力判断代码长的雅痞
旁边巨佬疯狂嘲讽我代码长
最后告诉我只要-1就可以
emmm
awcsl
下见代码(然鹅还是比旁边神仙长)
```cpp
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define int long long
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
signed main()
{
int n,m,q;
scanf("%lld%lld%lld",&n,&m,&q);
int g=gcd(n,m);
for(int i=1,sx,sy,ex,ey;i<=q;i++)
{
scanf("%lld%lld%lld%lld",&sx,&sy,&ex,&ey);
if(sx==1) sy=(sy-1)/(n/g);
else sy=(sy-1)/(m/g);
if(ex==1) ey=(ey-1)/(n/g);
else ey=(ey-1)/(m/g);
puts(sy==ey?"YES":"NO");
}
}
```