【HDU5512 2015沈阳赛区D】【签到题 gcd博弈】Pagodas 取数x+y或x-y
来源:互联网 发布:保罗特勤淘宝 编辑:程序博客网 时间:2024/06/05 03:17
Pagodas
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 72 Accepted Submission(s): 64
Problem Description
Two monks, Yuwgna and Iaka, decide to make glories great again. They take turns to build pagodas and Yuwgna takes first. For each turn, one can rebuild a new pagodas labelled
This is a game for them. The monk who can not rebuild a new pagoda will lose the game.
Input
The first line contains an integer t (1≤t≤500) which is the number of test cases.
For each test case, the first line provides the positive integern (2≤n≤20000) and two different integers a and b .
For each test case, the first line provides the positive integer
Output
For each test case, output the winner (``Yuwgna" or ``Iaka"). Both of them will make the best possible decision each time.
Sample Input
162 1 23 1 367 1 2100 1 28 6 89 6 810 6 811 6 812 6 813 6 814 6 815 6 816 6 81314 6 81994 1 131994 7 12
Sample Output
Case #1: IakaCase #2: YuwgnaCase #3: YuwgnaCase #4: IakaCase #5: IakaCase #6: IakaCase #7: YuwgnaCase #8: YuwgnaCase #9: IakaCase #10: IakaCase #11: YuwgnaCase #12: YuwgnaCase #13: IakaCase #14: YuwgnaCase #15: IakaCase #16: Iaka
Source
2015ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学)
#include<stdio.h>#include<string.h>#include<ctype.h>#include<math.h>#include<iostream>#include<string>#include<set>#include<map>#include<vector>#include<queue>#include<bitset>#include<algorithm>#include<time.h>using namespace std;void fre(){freopen("c://test//input.in","r",stdin);freopen("c://test//output.out","w",stdout);}#define MS(x,y) memset(x,y,sizeof(x))#define MC(x,y) memcpy(x,y,sizeof(x))#define MP(x,y) make_pair(x,y)#define ls o<<1#define rs o<<1|1typedef long long LL;typedef unsigned long long UL;typedef unsigned int UI;template <class T> inline void gmax(T &a,T b){if(b>a)a=b;}template <class T> inline void gmin(T &a,T b){if(b<a)a=b;}const int N=0,M=0,Z=1e9+7,ms63=1061109567;int casenum,casei;int gcd(int x,int y){return y==0?x:gcd(y,x%y);}int main(){scanf("%d",&casenum);for(casei=1;casei<=casenum;casei++){int n,a,b;scanf("%d%d%d",&n,&a,&b);printf("Case #%d: %s\n",casei,(n/gcd(a,b))&1?"Yuwgna":"Iaka");}return 0;}/*【trick&&吐槽】这道题之所以给了这么多样例,就是为了让这题的结论更容易观察,让这题更算得上是签到题【题意】共有T([1,500])组数据。每组数据有1~n([2,20000])共n个正整数。一开始对于已有数字集合,除了a,b(1<=a,b<=n && a≠b),其他数字都是不存在的。对于每次成功的操作,我们是从已有数字集合之中,任选两个不同数x,y,得到z=x-y或者z=x+y,如果z是在[1,n]范围,而且z这个数字当前不存在,那我们就可以得到这个新数z,并把其放入已有数字集合之中。Yuwgna先手,Iaka后手,谁无法操作谁就输了。问你最后的winner是谁。【类型】签到 博弈 gcd【分析】首先应该想的问题是,数轴的范围是[1,n],但是我们能选的数究竟有什么呢?样例中的{3 1 3}{8 6 8}这样组数据,前者可以取遍1,2,3,后者却只能取得2,4,6,8,让我们很快想到实际能选取的数字范围要由gcd判定。我们先令g=gcd(x,y),那显然我们能取的数,必然是g的倍数。于是求出,接下来能取的数的个数num=n/g-2所以答案就是——【时间复杂度&&优化】O(Tlogn)【数据】162 1 23 1 367 1 2100 1 28 6 89 6 810 6 811 6 812 6 813 6 814 6 815 6 816 6 81314 6 81994 1 131994 7 12*/
1 0
- 【HDU5512 2015沈阳赛区D】【签到题 gcd博弈】Pagodas 取数x+y或x-y
- BZOJ 1101([POI2007]Zap-满足x<=a&&y<=b&&gcd(x,y)=d的数对个数)
- hdu5512 Pagodas 规律题 gcd
- x或y等于x加y
- x或y等于x加y
- HDU5512 Pagodas(博弈)
- HDU5512 Pagodas(GCD)
- HDU5512 Pagodas(GCD+水题)
- (x&y)+((x^y)>>1)
- (x&y)+((x^y)>>1)
- (x&y)+((x^y)>>1)
- (x&y)+((x^y)>>1)
- (x&y)+((x^y)>>1)
- $$x^y+y^x>1$$
- BZOJ 2301 Problem B(x属于[a,b],y属于[c,d]满足gcd(x,y)=k的(x,y)的有序对数)
- 不可表示的数[x/2] + y + x * y
- stanford cs106b GCD(x, y) demo
- Pagodas --(hdu5512)2015ACM/ICPC亚洲区沈阳站
- TCP/IP详解学习笔记(13)-- TCP连接的建立与终止
- 黑马程序员——oc语言学习心得—— Foundaction
- springMVC Kaptcha 实现验证码功能
- android studio 打包
- hdoj 5510 Bazinga 【不要想太多。。。 strstr】
- 【HDU5512 2015沈阳赛区D】【签到题 gcd博弈】Pagodas 取数x+y或x-y
- java学习笔记.03——线程同步
- 输入cin>>
- 同余式。。
- nyoj 星际之门(一) 127 (无根树转有根树)
- 简单的java文档扫描器
- bzoj3480【Usaco2014 Mar】Mooo
- 块级元素居中
- 【HDU5510 2015沈阳赛区B】【KMP or strstr for循环剪枝】Bazinga 循环处思维灵活转化 时间复杂度均摊思想