Find the winner of the game based on the given moves
Given two integers N and M. Two players A and B are playing this game, and the task is to find the winner A or B according to the given moves if both players play the game optimally and A starts first. The move of the games are as follows:
- The player destroys anyone from both integers and then divides the other integer into two new integers.
- The game is playable until any player is not able to make any moves.
Examples:
Input: N = 2, M = 1
Output: A
Explanation: Move 1: Player A destroys the integer M = 1 and splits the integer N = 2 into two new integers 1 and 1 let say them updated values in form of N and M, which are N = 1 and M = 1 .Now Player B can destroy any of the integer either N or M but can’t spilt the other integer into two new integers. Because 1 can’t be divide into two new integers. Hence B is not able to make any moves and A wins.
Input: N = 1, M = 5
Output: B
Explanation: It can be verified that it is not possible to win for Player A, If both the player plays optimally.
Approach: Implement the idea below to solve the problem
The problem is based on Game Theory and can be solved by using some observations. The key observation is, it is only possible to win for player A, when either N or M is even.
Steps were taken to solve the problem:
- If (N % 2 == 0) output A.
- else if (M % 2 == 0) output A.
- else output B.
Below is the code to implement the approach:
C++
#include <bits/stdc++.h>
using namespace std;
void Find_Winner( int N, int M)
{
if (N % 2 == 0) {
cout << "A" << endl;
}
else if (M % 2 == 0) {
cout << "A" << endl;
}
else {
cout << "B" << endl;
}
}
int main() {
int N = 1;
int M = 5;
Find_Winner(N, M);
}
|
Java
import java.io.*;
import java.lang.*;
import java.util.*;
class GFG {
public static void main(String[] args)
throws java.lang.Exception
{
int N = 1 ;
int M = 5 ;
Find_Winner(N, M);
}
static void Find_Winner( int N, int M)
{
if (N % 2 == 0 ) {
System.out.println( "A" );
}
else if (M % 2 == 0 ) {
System.out.println( "A" );
}
else {
System.out.println( "B" );
}
}
}
|
Python3
def find_winner(N, M):
if N % 2 = = 0 :
print ( "A" )
elif M % 2 = = 0 :
print ( "A" )
else :
print ( "B" )
N = 1
M = 5
find_winner(N, M)
|
Javascript
function Find_Winner( N, M)
{
if (N % 2 == 0) {
console.log( "A" + "<br>" );
}
else if (M % 2 == 0) {
console.log( "A" + "<br>" );
}
else {
console.log( "B" + "<br>" );
}
}
let N = 1;
let M = 5;
Find_Winner(N, M);
|
C#
using System;
public class GFG {
public static void FindWinner( int N, int M)
{
if (N % 2 == 0) {
Console.WriteLine( "A" );
}
else if (M % 2 == 0) {
Console.WriteLine( "A" );
}
else {
Console.WriteLine( "B" );
}
}
public static void Main()
{
int N = 1;
int M = 5;
FindWinner(N, M);
}
}
|
Time Complexity: O(1)
Auxiliary Space: O(1)
Last Updated :
08 Mar, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...