17 November 2015

uva 10165

It will be easy to solve the problem if you know about the Nim game.
"Nim has been mathematically solved for any number of initial heaps and objects, and there is an easily calculated way to determine which player will win and what winning moves are open to that player. In a game that starts with heaps of three, four, and five, the first player will win with optimal play, whether the misère or normal play convention is followed." - Wikipedia 

The operation which is needed is XOR ( ^ ). 

/***
Md. Namzul Hasan
Shahjalal University of Science & Technology,Sylhet.
hasan08sust@gmail.com
***/
#include<bits/stdc++.h>
using namespace std ;
typedef long long ll ;
typedef int in ;
typedef unsigned long long ull ;
const double pi = 2*acos(0) ;
#define maxi 40000
#define pf printf
#define sc scanf
#define pb push_back
#define MEM(x,y) (memset((x),(y),sizeof(x)))
#define MIN(x,y) ((x) < (y) ? (x) : (y))
#define MAX(x,y) ((x) > (y) ? (x) : (y))
#define load(array,size)  for(int i=0 ; i<size ; i++) cin>>array[i]  ;
#define new_line  pf("\n")
#define clear_data(array) memset(array,0,sizeof(array))
#define highest_int 2147483647

int main()
{
    int n ;
    while(sc("%d",&n)==1 && n)
    {
       int  l=0 ;
       int m ;
       for(int i=0 ;i<n ;i++)
       {
           sc("%d",&m) ;
           l = l^m ;
       }
       if(l!=0)
        pf("Yes\n") ;
       else
        pf("No\n") ;

    }

    return 0;
}

No comments:

Post a Comment

UVA 10679 - I Love Strings!!