zoukankan      html  css  js  c++  java
  • 洛谷P1247取火柴游戏

    题目:https://www.luogu.org/problemnew/show/P1247

    可以知道必败局面为n[1]^n[2]^...^n[k]=x=0;

    而若x不等于0,则一定可以取一次使其变为0,所以此时为必胜;

    取火柴数即为n[i]^x,取掉后异或和变为0;

    因为取火柴数为正数,所以要n[i]>n[i]^x。

    代码如下:

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int k,n[500005],x;
    int main()
    {
        scanf("%d",&k);
        for(int i=1;i<=k;i++)
        {
            scanf("%d",&n[i]);
            x^=n[i];
        }
        if(x==0)
        {
            printf("lose");
            return 0;
        }
        for(int i=1;i<=k;i++)
            if((n[i]^x)<n[i])
            {
                printf("%d %d
    ",n[i]-(n[i]^x),i);
                n[i]=(n[i]^x);
                for(int j=1;j<=k;j++)
                    printf("%d ",n[j]);
                return 0;
            }
    }
  • 相关阅读:
    第二章初识MySQL
    第一章 数据库
    Java&SQL7
    Java&SQL
    Java&SQL6
    Java&SQL5
    Java&SQL4
    Java&SQL3
    Java&SQL2
    博客地址已搬迁
  • 原文地址:https://www.cnblogs.com/Zinn/p/9073278.html
Copyright © 2011-2022 走看看