Cuente la suma distinta de pares posibles de un rango dado

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:

  1. (3, 3). Suma = 6.
  2. (3, 4). Suma = 7.
  3. (3, 5). Suma = 8.
  4. (4, 5). Suma = 9.
  5. (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>
Producción: 

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

Deja una respuesta

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