题解

2 条题解

  • 2
    @ 2020-08-04 20:42:36
    #include <bits/stdc++.h>
    using namespace std;
    #define maxn 33333
    int n,q;
    int sg[maxn];
    int cnt[303]={0};
    void gao(int x,int p,int w) {
        int a,b,c=0,y=x;
        for(a=1;a<=q;a++) {
            if(y%p!=0) break;
            y/=p;c^=sg[y];
            if(c<303) cnt[c]=x;
        }
    }
    void get_sg(int x) {
        int a,b,c;
        for(b=2,a=1;;a++) {
            if(x%b!=0) break;
            gao(x,b,a);
            b*=2;
        }
        for(b=3,a=1;;a++) {
            if(x%b!=0) break;
            gao(x,b,a);
            b*=3;
        }
        for(a=0;;a++)
        if(cnt[a]!=x) {
            sg[x]=a;
            return;
        }
    }
    int main(){
        int T,t;
        scanf("%d",&T);
        for(t=1;t<=T;t++) {
            int a,b,c=0;
            memset(cnt,0,sizeof cnt);
            scanf("%d%d",&n,&q);
            for(a=1;a<=n;a++) get_sg(a);
            //for(a=1;a<=n;a++) printf("%d\n",sg[a]);
            for(a=1;a<=n;a++) {
                scanf("%d",&b);
                if(b==0) c^=sg[a];
            }
            if(c==0) printf("lose\n");
            else printf("win\n");
        }
        return 0;
    }
    
  • 0
    @ 2017-04-11 21:37:06
  • 1

信息

ID
1993
难度
1
分类
(无)
标签
递交数
43
已通过
32
通过率
74%
被复制
2
上传者