1 条题解
-
0
注意到
该题网格行列环形跳跃相互独立
依据数论环形遍历结论:在总长为len的环上固定跳cnt步能遍历所有位置的充要条件是gcd(len,cnt)=1
证明如下
设环下标模 ,每次增量为 ,可达位置为 $k\cdot \mathit{cnt}\pmod{\mathit{len}},k\in\mathbb{N}$;记,由贝祖定理,存在整数解,所有落点必是 的倍数,即 ,仅当 可取遍全部剩余类,故充要条件。
两项同时成立则可遍历全部网格输出 Yes,否则输出 No。
C++
int main() { AC; int t; cin>>t; while(t--) { ll n,m,a,b; cin>>n>>m>>a>>b; ll x=gcd(a,n); ll y=gcd(b,m); if(x==1&&y==1)cout<<"Yes\n"; else cout<<"No\n"; } return 0; }Python
import sys,math def main(): i=sys.stdin.read().split() t=int(i[0]) idx=1 for _ in range(t): n=int(i[idx]) m=int(i[idx+1]) a=int(i[idx+2]) b=int(i[idx+3]) idx+=4 if math.gcd(a,n)==1 and math.gcd(b,m)==1: print("Yes") else: print("No") if __name__=="__main__": main()
- 1
信息
- ID
- 1165
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 4
- 已通过
- 3
- 上传者