Dados dos números enteros N y E, donde N representa el número de botellas de agua llenas y E representa el número de botellas vacías que se pueden cambiar por una botella de agua llena. La tarea es encontrar el número máximo de botellas de agua que se pueden vaciar.
Ejemplos:
Entrada: N = 9, E= 3
Salida: 13
Explicación:
Inicialmente, hay 9 botellas de agua completamente llenas.
Todos ellos se vacían para obtener 9 botellas vacías. Por lo tanto, cuenta = 9
Luego cambia 3 botellas a la vez por 1 botella completamente llena.
Por lo tanto, se obtienen 3 botellas completamente llenas.
Luego esas 3 botellas se vacían para obtener 3 botellas vacías. Por lo tanto, contar = 9 + 3 = 12
Entonces esas 3 botellas se intercambian por 1 botella llena que se vacía.
Por lo tanto, cuenta = 9 + 3 + 1 = 13 .Entrada: N = 7, E = 5
Salida: 8
Explicación:
Vacíe las 7 botellas de agua completamente llenas. Por lo tanto, cuenta = 7
Luego intercambia 5 botellas para obtener 1 botella completamente llena. Luego vacía esa botella.
Por lo tanto, cuenta = 7 + 1 = 8 .
Planteamiento: Se deben seguir los siguientes pasos para resolver el problema:
- Almacene el valor de N en una variable temporal, digamos a.
- Inicialice una variable, digamos s, para almacenar el conteo de botellas vacías y otra variable, digamos b, para almacenar el conteo de botellas restantes después del intercambio.
- Ahora iterar hasta que a no sea igual a 0 e incrementar s en a , ya que será el número mínimo de botellas que se habrán vaciado.
- Actualice los siguientes valores:
- a a (a + b) / e
- b a N – (a * e)
- N a (a+b)
- Devuelve s como la respuesta requerida.
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 find the maximum // bottles that can be emptied int maxBottles(int n, int e) { int s = 0, b = 0; int a = n; // Iterate until a // is non-zero while (a != 0) { // Add the number of // bottles that are emptied s = s + a; // Update a after // exchanging empty bottles a = (a + b) / e; // Stores the number of bottles // left after the exchange b = n - (a * e); n = a + b; } // Return the answer return s; } // Driver Code int main() { int n = 9, e = 3; // Function call int s = maxBottles(n, e); cout << s << endl; }
C
// C program for the above approach #include <stdio.h> // Function to find the maximum // bottles that can be emptied int maxBottles(int n, int e) { int s = 0, b = 0; int a = n; // Iterate until a // is non-zero while (a != 0) { // Add the number of // bottles that are emptied s = s + a; // Update a after // exchanging empty bottles a = (a + b) / e; // Stores the number of bottles // left after the exchange b = n - (a * e); n = a + b; } // Return the answer return s; } // Driver Code int main() { int n = 9, e = 3; // Function call int s = maxBottles(n, e); printf("%d",s); } // This code is contributed by allwink45.
Java
// Java program for the // above approach import java.util.*; class GFG{ // Function to find the maximum // bottles that can be emptied static int maxBottles(int n, int e) { int s = 0, b = 0; int a = n; // Iterate until a // is non-zero while (a != 0) { // Add the number of // bottles that are emptied s = s + a; // Update a after // exchanging empty bottles a = (a + b) / e; // Stores the number of bottles // left after the exchange b = n - (a * e); n = a + b; } // Return the answer return s; } // Driver Code public static void main(String[] args) { int n = 9, e = 3; // Function call int s = maxBottles(n, e); System.out.print(s + "\n"); } } // This code is contributed by 29AjayKumar
Python3
# Python3 program for the # above approach # Function to find the maximum # bottles that can be emptied def maxBottles(n, e): s = 0 b = 0 a = n # Iterate until a # is non-zero while (a != 0): # Add the number of # bottles that are emptied s = s + a # Update a after # exchanging empty bottles a = (a + b) // e # Stores the number of bottles # left after the exchange b = n - (a * e) n = a + b # Return the answer return s # Driver Code if __name__ == '__main__': n = 9 e = 3 # Function call s = maxBottles(n, e) print(s) # This code is contributed by mohit kumar 29
C#
// C# program for the above approach using System; class GFG{ // Function to find the maximum // bottles that can be emptied static int maxBottles(int n, int e) { int s = 0, b = 0; int a = n; // Iterate until a // is non-zero while (a != 0) { // Add the number of // bottles that are emptied s = s + a; // Update a after // exchanging empty bottles a = (a + b) / e; // Stores the number of bottles // left after the exchange b = n - (a * e); n = a + b; } // Return the answer return s; } // Driver Code public static void Main() { int n = 9, e = 3; // Function call int s = maxBottles(n, e); Console.Write(s + "\n"); } } // This code is contributed by code_hunt
Javascript
<script> // javascript program for the // above approach // Function to find the maximum // bottles that can be emptied function maxBottles(n, e) { var s = 0, b = 0; var a = n; // Iterate until a // is non-zero while (a != 0) { // Add the number of // bottles that are emptied s = s + a; // Update a after // exchanging empty bottles a = (a + b) / e; // Stores the number of bottles // left after the exchange b = n - (a * e); n = a + b; } // Return the answer return s; } // Driver Code var n = 9, e = 3; // Function call var s = maxBottles(n, e); document.write(parseInt(s) + "\n"); // This code contributed by Princi Singh </script>
Producción:
13
Complejidad temporal: O(N)
Espacio auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por IshwarGupta y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA