Dados dos enteros positivos L y R ( donde L ≤ R ), la tarea es contar el número de enteros distintos que se pueden obtener sumando cualquier par de enteros del rango [L, R] .
Ejemplos:
Entrada: L = 3, R = 5
Salida: 11
Explicación: Todas las posibles sumas distintas de pares son las siguientes:
- (3, 3). Suma = 6.
- (3, 4). Suma = 7.
- (3, 5). Suma = 8.
- (4, 5). Suma = 9.
- (5, 5). Suma = 10.
Por lo tanto, la cuenta de sumas distintas es 5.
Entrada: L = 12, R = 14
Salida: 5
Enfoque ingenuo: el enfoque más simple para resolver el problema dado es encontrar la suma de todos los pares posibles de números del rango [L, R] e imprimir el recuento de todas las sumas distintas obtenidas.
Complejidad de tiempo: O((L – R) 2 )
Espacio auxiliar: O(1)
Enfoque eficiente: el enfoque anterior se puede optimizar en función de las siguientes observaciones:
- Dado que el rango dado [L, R] es continuo, el rango de números obtenidos al sumar también será continuo.
- La suma mínima y máxima de pares del rango viene dada por 2 * L y 2 * R respectivamente.
- Por lo tanto, la suma de pares distinta de conteo viene dada por (2 * R – 2 * L + 1) .
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 count distinct sum of // pairs possible from the range [L, R] int distIntegers(int L, int R) { // Return the count of // distinct sum of pairs return 2 * R - 2 * L + 1; } // Driver Code int main() { int L = 3, R = 8; cout << distIntegers(L, R); return 0; }
Java
// Java program for the above approach import java.io.*; class GFG{ // Function to count distinct sum of // pairs possible from the range [L, R] static int distIntegers(int L, int R) { // Return the count of // distinct sum of pairs return 2 * R - 2 * L + 1; } // Driver Code public static void main (String[] args) { int L = 3, R = 8; System.out.println(distIntegers(L, R)); } } // This code is contributed by rag2127
Python3
# Python3 program for the above approach # Function to count distinct sum of # pairs possible from the range [L, R] def distIntegers(L, R): # Return the count of # distinct sum of pairs return 2 * R - 2 * L + 1 # Driver Code if __name__ == '__main__': L, R = 3, 8 print (distIntegers(L, R)) # This code is contributed by mohit kumar 29.
C#
// C# program for the above approach using System; using System.Collections.Generic; class GFG{ // Function to count distinct sum of // pairs possible from the range [L, R] static int distIntegers(int L, int R) { // Return the count of // distinct sum of pairs return 2 * R - 2 * L + 1; } // Driver Code static public void Main() { int L = 3, R = 8; Console.Write(distIntegers(L, R)); } } // This code is contributed by avijitmondal1998
Javascript
<script> // Function to count distinct sum of // pairs possible from the range [L, R] function distIntegers(L,R) { // Return the count of // distinct sum of pairs return 2 * R - 2 * L + 1; } // Driver Code let L = 3, R = 8; document.write(distIntegers(L, R)); // This code is contributed by avanitrachhadiya2155 </script>
11
Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por portalpirate y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA