NC216204. DrinkingTimeI
描述
输入描述
输入只有一行,包含四个整数 。
输出描述
如果 能在游戏中获胜,则输出"Yes",否则输出"No"。(输出不含引号)
示例1
输入:
1 14 5 14
输出:
No
说明:
游戏开始时, 先进行行动,但是因为对于任意大于 的正整数 ,都不存在正整数 使 且 ,所以 必定失败。C(clang11) 解法, 执行用时: 2ms, 内存消耗: 376K, 提交时间: 2021-02-05 16:34:12
#include<stdio.h> #include<string.h> int main() { int a,b,p,q,f=1,x,y; scanf("%d%d%d%d",&a,&b,&p,&q); while(1) { if(a%p==0&&b%q==0) { x=a/p;y=b/q; while(x!=y&&(x%p==0||y%q==0)) { if(x>y&&x%p==0&&x/p!=x) x=x/p; else if(x<y&&y%q==0&&y/q!=y) y=y/q; else break; } if(x>=2&&x==y){ f=1-f; a=a/x; b=b/x; } else break; } else break; } if(f==1) printf("No\n"); else printf("Yes\n"); return 0; }
C++(clang++11) 解法, 执行用时: 13ms, 内存消耗: 504K, 提交时间: 2020-12-26 15:10:52
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main(){ int a,b,p,q;cin>>a>>b>>p>>q; if(p>=a||q>=b){ cout<<"No"; } else if(a%p!=0||b%q!=0){ cout<<"No"; } else { a/=p,b/=q; if(__gcd(b,a)==1){ cout<<"No"; } else cout<<"Yes"; } return 0; }