Dadas N monedas, la tarea es encontrar quién gana el juego de monedas.
El juego de monedas es un juego en el que cada jugador elige monedas de las N monedas dadas de tal manera que puede elegir monedas que van de 1 a 5 monedas en un turno y el juego continúa para ambos jugadores. El jugador que saca la última moneda pierde el juego.
Ejemplos:
Input: N = 4 Output: First Player Explanation: Player 1 pick 3 coins and Player 2 pick last coin Input: N = 7 Output: Second Player
Acercarse:
- Como el jugador puede tomar monedas que van de 1 a 5 inclusive y si un jugador pierde significa que solo tenía 1 moneda, de lo contrario, podría haber tomado 1 moneda menos que las monedas disponibles y obligar a otro jugador a perder. Así que ahora consideraremos el caso en el que el segundo jugador va a ganar, lo que significa que el primer jugador tenía solo una moneda.
- Para N = 1, el segundo jugador va a ganar, para N = 2 a 6, el primer jugador puede elegir 1 moneda menos que N, y obligar al segundo jugador a perder para descartarlas, para N = 7, el primer jugador puede elegir la moneda 1 a 5, eso dejará monedas que van de 6 a 2, y luego el segundo jugador puede elegir 1 a 5, y para ganar, el segundo jugador elegirá inteligentemente 1 moneda menos forzando al primero a perder, así que básicamente comenzando desde 1, todos los números en una brecha de 6 (ya que cualquiera que elija el primer jugador, el segundo jugador elegirá monedas iguales a la diferencia de 6 y las monedas elegidas por el primer jugador) será la ganancia para el segundo jugador.
- Finalmente, solo tenemos que verificar si n es de la forma 6 * c + 1 si es entonces el segundo jugador el que va a ganar, de lo contrario, el primer jugador va a ganar.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to find the player // who wins the game #include <bits/stdc++.h> using namespace std; // Function to check the // winning player void findWinner(int n) { // As discussed in the // above approach if ((n - 1) % 6 == 0) { cout << "Second Player wins the game"; } else { cout << "First Player wins the game"; } } // Driver function int main() { int n = 7; findWinner(n); }
Java
// Java program to find the player // who wins the game class GFG { // Function to check the // winning player static void findWinner(int n) { // As discussed in the // above approach if ((n - 1) % 6 == 0) { System.out.println("Second Player wins the game"); } else { System.out.println("First Player wins the game"); } } // Driver Code public static void main(String[] args) { int n = 7; findWinner(n); } } // This code is contributed by Rajput-Ji
Python3
# Python3 program to find the player # who wins the game # Function to check the # winning player def findWinner(n): # As discussed in the # above approach if ((n - 1) % 6 == 0): print("Second Player wins the game"); else: print("First Player wins the game"); # Driver Code if __name__ == '__main__': n = 7; findWinner(n); # This code is contributed by 29AjayKumar
C#
// C# program to find the player // who wins the game using System; class GFG { // Function to check the // winning player static void findWinner(int n) { // As discussed in the // above approach if ((n - 1) % 6 == 0) { Console.WriteLine("Second Player wins the game"); } else { Console.WriteLine("First Player wins the game"); } } // Driver Code public static void Main() { int n = 7; findWinner(n); } } // This code is contributed by AnkitRai01
Javascript
<script> // JavaScript program to find the player // who wins the game // Function to check the // winning player function findWinner(n) { // As discussed in the // above approach if ((n - 1) % 6 == 0) { document.write("Second Player wins the game"); } else { document.write("First Player wins the game"); } } // Driver function var n = 7; findWinner(n); </script>
Producción:
Second Player wins the game
Complejidad del tiempo:
Espacio Auxiliar: O(1)