Compruebe si las cantidades de 3 colores distintos se pueden convertir en un solo color mediante operaciones de combinación de pares dadas

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 * opT 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:

  1. Calcule el módulo 3 de todos los colores dados.
  2. Compruebe si hay un par igual.
  3. 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>
Producción: 

Yes

 

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por harsh2608 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *