2015ACM/ICPC亚洲区沈阳站-重现赛 D - Pagodas

-
题意:有\(n\)个数,开始给你两个数\(a\)和\(b\),每次找一个没出现过的数\(i\),要求满足\(i=j+k\)或\(i=j-k\),当某个人没有数可以选的时候判他输,问谁赢.
-
题解:对于\(a\)和\(b\),我们能有他两得到的最小数一定是\(d=gcd(a,b)\),所以总共能选的数的个数为\(n/d\),判断奇偶即可.
-
代码:
int t; int n,a,b; int main() { ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); cin>>t; int p=1; while(t--){ cin>>n>>a>>b; int d=__gcd(a,b); int cnt=n/d; if(cnt&1){ cout<<"Case #"<<p<<": Yuwgna"<<endl; } else cout<<"Case #"<<p<<": Iaka"<<endl; p++; } return 0; }
𝓐𝓬𝓱𝓲𝓮𝓿𝓮𝓶𝓮𝓷𝓽 𝓹𝓻𝓸𝓿𝓲𝓭𝓮𝓼 𝓽𝓱𝓮 𝓸𝓷𝓵𝔂 𝓻𝓮𝓪𝓵
𝓹𝓵𝓮𝓪𝓼𝓾𝓻𝓮 𝓲𝓷 𝓵𝓲𝓯𝓮

浙公网安备 33010602011771号