In Game of Nim, two players take turns removing objects from heaps or the pile of stones.
Suppose two players A and B are playing the game. Each is allowed to take only one stone from the pile. The player who picks the last stone of the pile will win the game. Given N the number of stones in the pile, the task is to find the winner, if player A starts the game.
Examples :
Input : N = 3. Output : Player A
Player A remove stone 1 which is at the top, then Player B remove stone 2 and finally player A removes the last stone. Input : N = 15. Output : Player A
For N = 1, player A will remove the only stone from the pile and wins the game.
For N = 2, player A will remove the first stone and then player B remove the second or the last stone. So player B will win the game.
So, we can observe player A wins when N is odd and player B wins when N is even.
Below is the implementation of this approach:
// C++ program for Game of Nim with removal // of one stone allowed. #include<bits/stdc++.h> using namespace std;
// Return true if player A wins, // return false if player B wins. bool findWinner( int N)
{ // Checking the last bit of N.
return N&1;
} // Driven Program int main()
{ int N = 15;
findWinner(N)? (cout << "Player A" ;):
(cout << "Player B" ;);
return 0;
} |
// JAVA Code For Game of Nim with // removal of one stone allowed import java.util.*;
class GFG {
// Return true if player A wins,
// return false if player B wins.
static int findWinner( int N)
{
// Checking the last bit of N.
return N & 1 ;
}
/* Driver program to test above function */
public static void main(String[] args)
{
int N = 15 ;
if (findWinner(N)== 1 )
System.out.println( "Player A" );
else
System.out.println( "Player B" );
}
} // This code is contributed by Arnav Kr. Mandal. |
# Python3 code for Game of Nim with # removal of one stone allowed. # Return true if player A wins, # return false if player B wins. def findWinner( N ):
# Checking the last bit of N.
return N & 1
# Driven Program N = 15
print ( "Player A" if findWinner(N) else "Player B" )
# This code is contributed by "Sharad_Bhardwaj". |
// C# Code For Game of Nim with // removal of one stone allowed using System;
class GFG {
// Return true if player A wins,
// return false if player B wins.
static int findWinner( int N)
{
// Checking the last bit of N.
return N & 1;
}
/* Driver program to test above function */
public static void Main()
{
int N = 15;
if (findWinner(N) == 1)
Console.Write( "Player A" );
else
Console.Write( "Player B" );
}
} // This code is contributed by vt_m. |
<?php // PHP program for Game of // Nim with removal of one // stone allowed. // Return true if player A wins, // return false if player B wins. function findWinner( $N )
{ // Checking the last bit of N. return $N &1;
} // Driver Code $N = 15;
if (findWinner( $N ))
echo "Player A" ;
else echo "Player B" ;
// This code is contributed by vt_m. ?> |
<script> // JavaScript program For Game of Nim with // removal of one stone allowed // Return true if player A wins,
// return false if player B wins.
function findWinner(N)
{
// Checking the last bit of N.
return N & 1;
}
// Driver code let N = 15;
if (findWinner(N)==1)
document.write( "Player A" );
else
document.write( "Player B" );
// This code is contributed by sanjoy_2.
</script> |
Output :
Player A
Time Complexity: O(1).
Auxiliary Space: O(1)