HDU5512 Pagodas(博弈)

来源:互联网 发布:sql数据库完全备份 编辑:程序博客网 时间:2024/05/16 00:47

题意:有n个位置修建佛塔,每个地方只能被修建一次,初始有a,b两个位置,每次修建的位置要满足,是i=k+j或者i=k-j。这样两个人轮流继续,不能修建者输。
解法:一位大神说,博弈论。看到a-b,就往gcd上想,大胆猜测 n/gcd(a,b)的奇偶

#include<bits/stdc++.h>using namespace std;#define LL long long#define pb push_back#define cl(a,b) memset(a,b,sizeof(a))const int maxn=105;const int inf=1<<23;int main(){    int t,a,b,n;    int cas=1;    scanf("%d",&t);    while(t--){        scanf("%d%d%d",&n,&a,&b);        printf("Case #%d: ",cas++);        if(n/__gcd(a,b)%2!=0){            puts("Yuwgna");        }        else {            puts("Iaka");        }    }    return 0;}
0 0
原创粉丝点击