Dados dos enteros positivos R y B que representan R frijoles rojos y B azules y un entero D , la tarea es verificar si es posible distribuir los frijoles entre varios (quizás, uno) paquetes de acuerdo con las siguientes reglas:
- Cada paquete tiene al menos un frijol rojo.
- Cada paquete tiene al menos un frijol azul.
- La cantidad de frijoles rojos y azules en cada paquete no debe diferir en más de D ( o |RB| <= D)
Escriba Sí si es posible. De lo contrario , imprima No.
Ejemplos
Entrada: R = 1, B = 1, D = 0
Salida: Sí
Explicación: Forme un paquete con 1 frijol rojo y 1 azul. La diferencia absoluta |1−1| = 0 ≤ re .Entrada: R = 6, B = 1, D = 4
Salida: No
Enfoque: Este problema se puede resolver fácilmente observando que el máximo de (R y B) es D + 1 veces el mínimo de R y B. Siga los pasos que se indican a continuación para resolver el problema:
- Encuentre el máximo de R y B. y el mínimo de R y B.
- Para satisfacer las 3 restricciones dadas, el valor de max(R, B) debe ser como máximo (D + 1) veces min(R, B) , porque se pueden guardar (D + 1) frijoles en cada paquete, 1 frijol de un tipo y frijoles D del otro tipo.
- Después de completar los pasos anteriores, imprima «Sí» si el valor de max(R, B) es menor o igual que (D + 1)*min(R, B) . 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 if it is possible // to distribute R red and B blue beans // in packets such that the difference // between the beans in each packet is // atmost D void checkDistribution(int R, int B, int D) { // Check for the condition to // distributing beans if (max(R, B) <= min(R, B) * (D + 1)) { // Print the answer cout << "Yes"; } // Distribution is not possible else { cout << "No"; } } // Driver Code int main() { int R = 1, B = 1, D = 0; checkDistribution(R, B, D); return 0; }
Java
// Java program for the above approach import java.io.*; class GFG { // Function to check if it is possible // to distribute R red and B blue beans // in packets such that the difference // between the beans in each packet is // atmost D static void checkDistribution(int R, int B, int D) { // Check for the condition to // distributing beans if (Math.max(R, B) <= Math.min(R, B) * (D + 1)) { // Print the answer System.out.println("Yes"); } // Distribution is not possible else { System.out.println("No"); } } // Driver Code public static void main(String[] args) { int R = 1, B = 1, D = 0; checkDistribution(R, B, D); } } // This code is contributed by Potta Lokesh
Python3
# Python3 program for the above approach # Function to check if it is possible # to distribute R red and B blue beans # in packets such that the difference # between the beans in each packet is # atmost D def checkDistribution(R, B, D): # Check for the condition to # distributing beans if (max(R, B) <= min(R, B) * (D + 1)): # Print the answer print("Yes") # Distribution is not possible else: print("No") # Driver Code R = 1 B = 1 D = 0 checkDistribution(R, B, D) # This code is contributed by code_hunt
C#
// C# program for the above approach using System; class GFG{ // Function to check if it is possible // to distribute R red and B blue beans // in packets such that the difference // between the beans in each packet is // atmost D static void checkDistribution(int R, int B, int D) { // Check for the condition to // distributing beans if (Math.Max(R, B) <= Math.Min(R, B) * (D + 1)) { // Print the answer Console.WriteLine("Yes"); } // Distribution is not possible else { Console.WriteLine("No"); } } // Driver code static public void Main() { int R = 1, B = 1, D = 0; checkDistribution(R, B, D); } } // This code is contributed by target_2.
Javascript
<script> // JavaScript program for the above approach // Function to check if it is possible // to distribute R red and B blue beans // in packets such that the difference // between the beans in each packet is // atmost D function checkDistribution(R, B, D) { // Check for the condition to // distributing beans if (Math.max(R, B) <= Math.min(R, B) * (D + 1)) { // Print the answer document.write("Yes"); } // Distribution is not possible else { document.write("No"); } } // Driver Code let R = 1, B = 1, D = 0; checkDistribution(R, B, D); // This code is contributed by sanjoy_62. </script>
Yes
Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por n4v33ntemp y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA