Dado un número entero N que es el número de piedras en una pila y el juego de piedras se está jugando entre usted y su amigo, la tarea es averiguar si ganará o no. Un jugador (en su turno) puede retirar 1 o 2 o 3 monedas, el juego continúa en turnos alternos. El que no es capaz de hacer el movimiento pierde el juego. En otras palabras, el jugador que retira el último grupo de monedas siempre gana. Escriba SÍ si puede ganar el juego; de lo contrario, escriba NO .
Ejemplos:
Entrada: N = 4
Salida: NO
Si hay 4 piedras en la bolsa, nunca ganarás el juego. No importa si quitas 1, 2 o 3 piedras, tu amigo siempre quitará la última piedra. Por lo tanto, no puede hacer el movimiento.
Entrada: N = 3
Salida: SÍ
Sí, puedes ganar el juego, solo quitas las 3 piedras en tu turno.
Acercarse:
- Primero considere los casos base, es decir, para n = [1, 2, 3] . En estos casos, siempre ganas, ya que puedes elegir todas las piedras y tu amigo no puede hacer el movimiento.
- Si n = 4 , perderá. Porque no importa cuántas tomes, dejarás algunas piedras para que tu amigo las tome y gane el juego. Entonces, para ganar, debe asegurarse de no llegar nunca a la situación en la que quedan exactamente cuatro piedras cuando llega su turno.
- Del mismo modo, si hay 5, 6 o 7 piedras, puedes ganar tomando lo suficiente para dejar 4 piedras para tu amigo. Pero si hay 8 piedras en la pila, perderás porque independientemente de si eliges 1, 2 o 3 piedras, tu amigo puede elegir 3, 2 o 1 piedra para asegurarse de que, de nuevo, te queden 4 piedras.
- Es obvio que se repite el mismo patrón, por lo tanto, si n % 4 == 0 , siempre perderá.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program of game of stones #include <bits/stdc++.h> using namespace std; // Function that returns true if u win bool checkWin(int n) { if (n % 4 != 0) return true; return false; } // Driver code int main() { // n is number of stones int n = 4; if (checkWin(n)) cout << "YES" << endl; else cout << "NO" << endl; return 0; }
Java
// Java program of game of stones import java.io.*; class GFG { // Function that returns true if u win static boolean checkWin(int n) { if (n % 4 != 0) return true; return false; } // Driver code public static void main (String[] args) { // n is number of stones int n = 4; if (checkWin(n)) System.out.println("YES"); else System.out.println( "NO"); } //This code is contributed by akt_mit }
python 3
# Python3 program of game of stones # Function that returns true if u win def checkWin( n): if (n % 4 != 0): return True return False # Driver code if __name__ == "__main__": # n is number of stones n = 4 if (checkWin(n)): print ( "YES") else: print ("NO")
C#
//C# program of game of stones using System; public class GFG{ // Function that returns true if u win static bool checkWin(int n) { if (n % 4 != 0) return true; return false; } // Driver code static public void Main (){ // n is number of stones int n = 4; if (checkWin(n)) Console.WriteLine("YES"); else Console.WriteLine( "NO"); } //This code is contributed by ajit }
PHP
<?php // PHP program of game of stones // Function that returns // true if u win function checkWin($n) { if ($n % 4 != 0) return true; return false; } // Driver code // n is number of stones $n = 4; if (checkWin($n)) echo "YES","\n" ; else echo "NO","\n" ; // This code is contributed // by ANKITRAI1 ?>
Javascript
<script> // Javascript program of game of stones // Function that returns true if u win function checkWin(n) { if (n % 4 != 0) return true; return false; } // n is number of stones let n = 4; if (checkWin(n)) document.write("YES"); else document.write( "NO"); </script>
NO
Publicación traducida automáticamente
Artículo escrito por sahilshelangia y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA