Suma del rango en una serie de primeros números naturales impares y luego pares

La secuencia primero consta de todos los números impares que comienzan de 1 a n y luego los números pares restantes que comienzan de 2 a n. Supongamos que tenemos n como 1000. Entonces la secuencia se convierte en 1 3 5 7….999 2 4 6….1000
Nos dan un rango (L, R), necesitamos encontrar la suma de los números de esta secuencia en el rango dado.
Nota: Aquí el rango se da como (L, R) L y R están incluidos en el rango
Ejemplos: 
 

Input  : n = 10
         Range 1 6
Output : 27
Explanation:
Sequence is 1 3 5 7 9 2 4 6 8 10
Sum in range (2, 6) 
= 1 + 3 + 5 + 7 + 9 + 2 
= 27

Input  : n = 5
         Range 1 2
Output : 4
Explanation:
sequence is 1 3 5 2 4
sum = 1 + 3 = 4

La idea es encontrar primero la suma de los números antes de la izquierda (excluyendo la izquierda), luego encontrar la suma de los números antes de la derecha (incluida la derecha). Obtenemos el resultado como la segunda suma menos la primera suma.
¿Cómo encontrar la suma hasta un límite?  
Primero contamos cuántos números impares hay, luego usamos fórmulas para la suma de números naturales impares y la suma de números naturales pares para encontrar el resultado.
¿Cómo encontrar el conteo de números impares? 
 

  • Si n es impar entonces el número de números impares es ((n/2) + 1)
  • Si n es par entonces el número de números impares es (n/2)

Por simple observación, obtenemos que el número de números impares es ceil(n/2). Entonces, el número de números pares es n – ceil(n/2). 
 

  • La suma de los primeros N números impares es (N^2) 
     
  • La suma de los primeros N números pares es (N^2) + N 
     

Para un número x dado, ¿cómo encontraremos la suma en la secuencia de 1 a x? 
supongamos que x es menor que el número de números impares. 
 

  • Entonces simplemente devolvemos (x*x)

Si la x es mayor que el número de números impares 
 

  • var = x-impar;
  • Eso significa que necesitamos primero var números pares
  • devolvemos (impar*impar) + (var*var) + var;

C++

// CPP program to find sum in the given range in
// the sequence 1 3 5 7.....N 2 4 6...N-1
#include <bits/stdc++.h>
using namespace std;
 
// For our convenience
#define ll long long
 
// Function that returns sum
// in the range 1 to x in the
// sequence 1 3 5 7.....N 2 4 6...N-1
ll sumTillX(ll x, ll n)
{
    // number of odd numbers
    ll odd = ceil(n / 2.0);
 
    if (x <= odd)
       return x * x;
 
    // number of extra even
    // numbers required
    ll even = x - odd;
 
    return ((odd * odd) + (even * even) + even);
}
 
int rangeSum(int N, int L, int R)
{
   return sumTillX(R, N) - sumTillX(L-1, N);
}
 
// Driver code
int main()
{
    ll N = 10, L = 1, R = 6;   
    cout << rangeSum(N, L, R);
    return 0;
}

C

// C program to find sum in the given range in
// the sequence 1 3 5 7.....N 2 4 6...N-1
#include <stdio.h>
#include <math.h>
 
// For our convenience
#define ll long long
 
// Function that returns sum
// in the range 1 to x in the
// sequence 1 3 5 7.....N 2 4 6...N-1
ll sumTillX(ll x, ll n)
{
    // number of odd numbers
    ll odd = ceil(n / 2.0);
 
    if (x <= odd)
       return x * x;
 
    // number of extra even
    // numbers required
    ll even = x - odd;
 
    return ((odd * odd) + (even * even) + even);
}
 
int rangeSum(int N, int L, int R)
{
   return sumTillX(R, N) - sumTillX(L-1, N);
}
 
// Driver code
int main()
{
    ll N = 10, L = 1, R = 6;
    printf("%d",rangeSum(N, L, R));
    return 0;
}
 
// This code is contributed by kothavvsaakash.

Java

// Java program to find
// sum in the given
// range in the sequence
// 1 3 5 7.....N
// 2 4 6...N-1
 
class GFG {
     
    // Function that returns sum
    // in the range 1 to x in the
    // sequence 1 3 5 7.....N 2 4 6...N-1
    static double sumTillX(double x,
                           double n)
    {
         
        // number of odd numbers
        double odd = Math.ceil(n / 2.0);
     
        if (x <= odd)
            return x * x;
     
        // number of extra even
        // numbers required
        double even = x - odd;
     
        return ((odd * odd) + (even *
                       even) + even);
    }
     
    static double rangeSum(double N,
                           double L,
                           double R)
    {
        return sumTillX(R, N) -
               sumTillX(L-1, N);
    }
     
    // Driver Code
    public static void main(String args[])
    {
        long N = 10, L = 1, R = 6;
        int n = 101;
        System.out.println((int)rangeSum(N, L, R));
         
    }
}
 
// This code is contributed by Sam007

Python 3

# Python 3 program to find sum in the
# given range in the sequence 1 3 5 7
# .....N 2 4 6...N-1
import math
 
# For our convenience
#define ll long long
 
# Function that returns sum in the
# range 1 to x in the sequence
# 1 3 5 7.....N 2 4 6...N-1
def sumTillX(x, n):
 
    # number of odd numbers
    odd = math.ceil(n / 2.0)
 
    if (x <= odd):
        return x * x;
 
    # number of extra even
    # numbers required
    even = x - odd;
 
    return ((odd * odd) +
            (even * even) + even);
 
 
def rangeSum(N, L, R):
 
    return (sumTillX(R, N) - 
                sumTillX(L-1, N));
 
# Driver code
N = 10
L = 1
R = 6
print(rangeSum(N, L, R))
 
# This code is contributed by
# Smitha

C#

// C# program to find sum in the given
// range in the sequence 1 3 5 7.....N
// 2 4 6...N-1
using System;
 
public class GFG {
         
    // Function that returns sum
    // in the range 1 to x in the
    // sequence 1 3 5 7.....N 2 4 6...N-1
    static double sumTillX(double x, double n)
    {
         
        // number of odd numbers
        double odd = Math.Ceiling(n / 2.0);
     
        if (x <= odd)
            return x * x;
     
        // number of extra even
        // numbers required
        double even = x - odd;
     
        return ((odd * odd) + (even * even)
                                    + even);
    }
     
    static double rangeSum(double N, double L,
                                       double R)
    {
        return sumTillX(R, N) - sumTillX(L-1, N);
    }
     
    // Driver code
    public static void Main()
    {
        long N = 10, L = 1, R = 6;
        Console.Write(rangeSum(N, L, R));
    }
}
 
// This code is contributed by Sam007.

PHP

<?php
// PHP program to find sum
// in the given range in the
// sequence 1 3 5 7.....
// N 2 4 6...N-1
 
// Function that returns sum
// in the range 1 to x in the
// sequence 1 3 5 7.....
// N 2 4 6...N-1
function sumTillX($x, $n)
{
     
    // number of odd numbers
    $odd = ceil($n / 2.0);
 
    if ($x <= $odd)
    return $x * $x;
 
    // number of extra even
    // numbers required
    $even = $x - $odd;
 
    return (($odd * $odd) +
            ($even * $even) +
             $even);
}
 
function rangeSum($N, $L, $R)
{
    return sumTillX($R, $N) -
           sumTillX($L-1, $N);
}
 
// Driver code
$N = 10; $L = 1; $R = 6;
echo(rangeSum($N, $L, $R));
 
// This code is contributed by Ajit.
?>

Javascript

<script>
// javascript program to find sum in the given range in
// the sequence 1 3 5 7.....N 2 4 6...N-1
 
// Function that returns sum
// in the range 1 to x in the
// sequence 1 3 5 7.....N 2 4 6...N-1
function sumTillX( x,  n)
{
 
    // number of odd numbers
    let odd = Math.ceil(n / 2.0);
 
    if (x <= odd)
       return x * x;
 
    // number of extra even
    // numbers required
    let even = x - odd;
 
    return ((odd * odd) + (even * even) + even);
}
 
function rangeSum( N,  L,  R)
{
   return sumTillX(R, N) - sumTillX(L-1, N);
}
 
// Driver code
    let N = 10, L = 1, R = 6;   
     document.write(rangeSum(N, L, R));
      
// This code is contributed by Rajput-Ji
 
</script>
Producción: 

27

 

Publicación traducida automáticamente

Artículo escrito por pawan_asipu 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 *