Hay dos jugadores P1 y P2 y dos montones de monedas que consisten en M y N monedas respectivamente. En cada turno, un jugador puede elegir solo una de las pilas de estas y descartar la otra. Esta pila descartada no se puede usar más en el juego. La pila que elige el jugador se divide en dos pilas de partes distintas de cero. El jugador que no puede dividir la pila, es decir, el número de monedas en la pila es < 2, pierde el juego. La tarea es determinar qué jugador gana si P1 comienza el juego y ambos jugadores juegan de manera óptima.
Ejemplos:
Entrada: M = 4, N = 4
Salida: Jugador 1 El
jugador 1 puede elegir cualquiera de los montones ya que ambos contienen el mismo número de monedas
y luego divide el elegido (el que no se elige se descarta) en dos montones con 1 moneda cada uno.
Ahora, el jugador 2 se queda sin movimiento (ya que las dos pilas restantes contienen una sola moneda cada una
que no se puede dividir en dos grupos de monedas distintas de cero).
Entrada: M = 1, N = 1
Salida: Jugador 2
No hay movimiento que hacer.
Enfoque: simplemente verifique si alguna parte de la pila consta de un número par de monedas. En caso afirmativo, gana el jugador 1; de lo contrario, gana el jugador 2.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // Function to print the winner of the game void findWinner(int M, int N) { if (M % 2 == 0 || N % 2 == 0) cout << "Player 1"; else cout << "Player 2"; } // Driver code int main() { int M = 1, N = 2; findWinner(M, N); return 0; }
Java
// Java implementation of the approach import java.io.*; class GFG { // Function to print the winner of the game static void findWinner(int M, int N) { if (M % 2 == 0 || N % 2 == 0) System.out.println("Player 1"); else System.out.println("Player 2"); } // Driver code public static void main(String[] args) { int M = 1, N = 2; findWinner(M, N); } } // This code is contributed by ajit.
Python3
# Python implementation of the approach # Function to print the winner of the game def findWinner(M, N): if (M % 2 == 0 or N % 2 == 0): print("Player 1"); else: print("Player 2"); # Driver code M = 1; N = 2; findWinner(M, N); # This code contributed by PrinciRaj1992
C#
// C# implementation of the approach using System; class GFG { // Function to print the winner of the game static void findWinner(int M, int N) { if (M % 2 == 0 || N % 2 == 0) Console.WriteLine("Player 1"); else Console.WriteLine("Player 2"); } // Driver code static public void Main() { int M = 1, N = 2; findWinner(M, N); } } // This code is contributed by Tushil..
PHP
<?php //PHP implementation of the approach // Function to print the winner of the game function findWinner($M, $N) { if ($M % 2 == 0 || $N % 2 == 0) echo "Player 1"; else echo "Player 2"; } // Driver code $M = 1; $N = 2; findWinner($M, $N); // This code is contributed by Tushil. ?>
Javascript
<script> // Javascript implementation of the approach // Function to print the winner of the game function findWinner(M, N) { if (M % 2 == 0 || N % 2 == 0) document.write(("Player 1")); else document.write(("Player 2")); } // Driver code var M = 1, N = 2; findWinner(M, N); // This code is contributed by rutvik_56. </script>
Player 1
Publicación traducida automáticamente
Artículo escrito por Naman_Garg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA