Dados 3 números enteros R , G y B que denotan el recuento de 3 colores rojo, verde y azul respectivamente, de modo que dos colores diferentes de la misma cantidad (por ejemplo, X ) se combinan para formar un tercer color del doble de esa cantidad 2 * X . La tarea es verificar si es posible convertir todos los colores a un solo color o no. Si es posible, imprima «Sí» . De lo contrario, escriba “ No” .
Ejemplos:
Entrada: R = 1, G = 1, B = 1
Salida: Si
Explicación:
Operación 1: Mezclar 1 unidad de Rojo con 1 unidad de Azul para obtener 2 unidades de Verde.
Por lo tanto, el recuento de cada color es: R = 0, G = 3, B = 0
Por lo tanto, todos los colores se convierten en un solo color.Entrada: R = 1, G = 6, B = 3
Salida: Si
Explicación:
Operación 1: Mezclar 1 unidad de Rojo con 1 unidad de Verde para obtener 2 unidades de Azul.
Por lo tanto, la cuenta de cada color es: R = 0, G = 5, B = 5
Operación 2: Mezclar 5 unidades de Verde con 5 unidades de Azul para obtener 10 unidades de Rojo.
Por lo tanto, el recuento de cada color es: R = 10, G = 0, B = 0
Por lo tanto, todos los colores se convierten en un solo color.
Enfoque: cambiar todos los colores al mismo color significa que la tarea es llegar al estado final como T = (0, 0, R + G + B) o cualquiera de sus otras dos permutaciones. Inicialmente, el estado es I = (R, G, B). Después de cada operación, los valores de los dos colores iniciales se reducen en uno cada uno y aumentan en dos para el tercer color. Esta operación se puede escribir como una permutación de (-1, -1, +2) según los colores elegidos. Por lo tanto, se forma la siguiente ecuación:
N * op ≡ T mod 3 donde,
N es el número de operaciones a realizar
op es la operación
T es el estado final
Usando la ecuación anterior, observe que si los dos valores son iguales después de encontrar su módulo con 3, los colores dados se pueden cambiar a un solo color. Por lo tanto, siga los pasos a continuación para resolver el problema:
- Calcule el módulo 3 de todos los colores dados.
- Compruebe si hay un par igual.
- Si es cierto, escriba » Sí» . De lo contrario, escriba “ No” .
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function to check whether it is // possible to do the operation or not bool isPossible(int r, int b, int g) { // Calculate modulo 3 // of all the colors r = r % 3; b = b % 3; g = g % 3; // Check for any equal pair if (r == b || b == g || g == r) { return true; } // Otherwise else { return false; } } // Driver Code int main() { // Given colors int R = 1, B = 3, G = 6; // Function Call if (isPossible(R, B, G)) { cout << "Yes" << endl; } else { cout << "No" << endl; } return 0; }
Java
// Java program for // the above approach import java.util.*; class GFG{ // Function to check whether // it is possible to do the // operation or not static boolean isPossible(int r, int b, int g) { // Calculate modulo 3 // of all the colors r = r % 3; b = b % 3; g = g % 3; // Check for any equal pair if (r == b || b == g || g == r) { return true; } // Otherwise else { return false; } } // Driver Code public static void main(String[] args) { // Given colors int R = 1, B = 3, G = 6; // Function Call if (isPossible(R, B, G)) { System.out.print("Yes" + "\n"); } else { System.out.print("No" + "\n"); } } } // This code is contributed by shikhasingrajput
Python3
# Python3 program for the above approach # Function to check whether it is # possible to do the operation or not def isPossible(r, b, g): # Calculate modulo 3 # of all the colors r = r % 3 b = b % 3 g = g % 3 # Check for any equal pair if(r == b or b == g or g == r): return True # Otherwise else: return False # Driver Code # Given colors R = 1 B = 3 G = 6 # Function call if(isPossible(R, B, G)): print("Yes") else: print("No") # This code is contributed by Shivam Singh
C#
// C# program for // the above approach using System; class GFG{ // Function to check whether // it is possible to do the // operation or not static bool isPossible(int r, int b, int g) { // Calculate modulo 3 // of all the colors r = r % 3; b = b % 3; g = g % 3; // Check for any equal pair if (r == b || b == g || g == r) { return true; } // Otherwise else { return false; } } // Driver Code public static void Main(String[] args) { // Given colors int R = 1, B = 3, G = 6; // Function Call if (isPossible(R, B, G)) { Console.Write("Yes" + "\n"); } else { Console.Write("No" + "\n"); } } } // This code is contributed by shikhasingrajput
Javascript
<script> // Javascript program for the above approach // Function to check whether it is // possible to do the operation or not function isPossible(r, b, g) { // Calculate modulo 3 // of all the colors r = r % 3; b = b % 3; g = g % 3; // Check for any equal pair if (r == b || b == g || g == r) { return true; } // Otherwise else { return false; } } // Driver Code // Given colors var R = 1, B = 3, G = 6; // Function Call if (isPossible(R, B, G)) { document.write( "Yes"); } else { document.write( "No"); } </script>
Yes
Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)