Suma de números de Perrin

Dado un número positivo n, encuentre el valor de P0 + P1 + P2 + …. + Pn donde pi indica el i-ésimo número de Perrin. Los primeros números de Perrin son 3, 0, 2, 3, 2, 5, 5, 7…….
Ejemplos: 
 

Input  : 4 
Output : 8
Explanation : 3 + 0 + 2 + 3

Input  : 6
Output : 15
Explanation : 3 + 0 + 2 + 3 + 2 + 5

En una publicación anterior, presentamos los Números de Perrin . En términos matemáticos, la secuencia p(n) de los números de Perrin está definida por la relación de recurrencia 
 

 P(n) = P(n-2) + P(n-3) for n > 2, 

with initial values
    P(0) = 3, P(1) = 0, P(2) = 2. 

Método 1 (usando la fórmula recursiva del n-ésimo número de Perrin) 
Simplemente podemos sumar números usando la fórmula recursiva anterior del n-ésimo número de Perrin. 
 

C++

// C++ program to calculate sum of Perrin Numbers
#include <bits/stdc++.h>
using namespace std;
 
// function for sum of first n Perrin number.
int calSum(int n)
{
    int a = 3, b = 0, c = 2;
    if (n == 0) // n=0
        return 3;
    if (n == 1) // n=1
        return 3;
    if (n == 2) // n=2
        return 5;
 
    // calculate k=5 sum of three previous step.
    int sum = 5;
 
    // Sum remaining numbers
    while (n > 2) {
        int d = a + b; // calculate next term
        sum += d;
        a = b;
        b = c;
        c = d;
        n--;
    }
 
    return sum;
}
 
// Driver code
int main()
{
    int n = 9;
    cout << calSum(n);
    return 0;
}

Java

// Java program to calculate
// sum of Perrin Numbers
import java.lang.*;
 
class GFG {
 
    // function for sum of first n Perrin number.
    static int calSum(int n)
    {
 
        int a = 3, b = 0, c = 2;
        if (n == 0) // n=0
            return 3;
        if (n == 1) // n=1
            return 3;
        if (n == 2) // n=2
            return 5;
 
        // calculate k=5 sum of three previous step.
        int sum = 5;
 
        // Sum remaining numbers
        while (n > 2) {
 
            // calculate next term
            int d = a + b;
            sum += d;
            a = b;
            b = c;
            c = d;
            n--;
        }
 
        return sum;
    }
 
    // Driver code
    public static void main(String[] args)
    {
        int n = 9;
        System.out.print(calSum(n));
    }
}
 
// This code is contributed by Anant Agarwal.

Python3

# Python program to calculate
# sum of Perrin Numbers
 
# function for sum of first
# n Perrin number.
def calSum(n):
 
    a = 3
    b = 0
    c = 2
 
    if (n == 0):  # n = 0
        return 3
    if (n == 1):  # n = 1
        return 3
    if (n == 2):  # n = 2
        return 5
  
    # calculate k = 5 sum of
    # three previous step.
    sum = 5
  
    # Sum remaining numbers
    while (n > 2):
 
        # calculate next term
        d = a + b
        sum = sum + d
        a = b
        b = c
        c = d
        n = n-1
     
    return sum
 
# Driver code
 
n = 9
print(calSum(n))
 
# This code is contributed
# by Anant Agarwal.

C#

// C# program to calculate
// sum of Perrin Numbers
using System;
 
class GFG {
 
    // function for sum of first n Perrin number.
    static int calSum(int n)
    {
 
        int a = 3, b = 0, c = 2;
 
        if (n == 0) // n=0
            return 3;
        if (n == 1) // n=1
            return 3;
        if (n == 2) // n=2
            return 5;
 
        // calculate k=5 sum of three
        // previous step.
        int sum = 5;
 
        // Sum remaining numbers
        while (n > 2) {
 
            // calculate next term
            int d = a + b;
            sum += d;
            a = b;
            b = c;
            c = d;
            n--;
        }
 
        return sum;
    }
 
    // Driver code
    public static void Main()
    {
 
        int n = 9;
 
        Console.WriteLine(calSum(n));
    }
}
 
// This code is contributed by vt_m.

PHP

<?php
// PHP program to calculate
// sum of Perrin Numbers
 
// function for sum of
// first n Perrin number.
function calSum($n)
{
     
    $a = 3;
    $b = 0;
    $c = 2;
    if ($n == 0) // n=0
        return 3;
    if ($n == 1) // n=1
        return 3;
    if ($n == 2) // n=2
        return 5;
 
    // calculate k=5 sum of
    // three previous step.
    $sum = 5;
 
    // Sum remaining numbers
    while ($n > 2)
    {
         
        // calculate next term
        $d = $a + $b;
         
        $sum += $d;
        $a = $b;
        $b = $c;
        $c = $d;
        $n--;
    }
 
    return $sum;
}
 
    // Driver code
    $n = 9;
    echo calSum($n);
     
// This code is contributed by ajit.
?>

Javascript

<script>
 
// Javascript program to calculate
// sum of Perrin Numbers
 
    // function for sum of first n Perrin number.
    function calSum(n)
    {
   
        let a = 3, b = 0, c = 2;
        if (n == 0) // n=0
            return 3;
        if (n == 1) // n=1
            return 3;
        if (n == 2) // n=2
            return 5;
   
        // calculate k=5 sum of three previous step.
        let sum = 5;
   
        // Sum remaining numbers
        while (n > 2) {
   
            // calculate next term
            let d = a + b;
            sum += d;
            a = b;
            b = c;
            c = d;
            n--;
        }
   
        return sum;
    }
      
// Driver code   
 
           let n = 9;
        document.write(calSum(n));
         
</script>

Producción: 

49

Complejidad de tiempo : O (n) desde que se usa un ciclo while

Complejidad del espacio : O(1) ya que usando variables constantes
 
Método 2 (usando la fórmula directa) 
La idea es encontrar la relación entre la suma de los números de Perrin y el n-ésimo número de Perrin.
 

p(i) refers to the i’th perrin number.
S(i) refers to sum of perrin numbers till p(i),

We can rewrite the relation P(n) = P(n-2) + P(n-3) 
as below :
P(n-3)    = P(n)  -  P(n-2)

Similarly,
P(n-4)    = P(n-1)  -  P(n-3)
P(n-5)    = P(n-2)  -  P(n-4)
.          .           .
.          .             .
.          .             .
P(1)      = P(4)    -  P(2)
P(0)      = P(3)    -  P(1)
-------------------------------
Adding all the equations, on left side, we have
{(n) + P(n-1) - P(1) - P(2) which is S(n-3).
Therefore,
S(n-3) = P(n) + P(n-1) - P(1) - P(2)
S(n-3) = P(n) + P(n-1) - 2
S(n)   = P(n+3) + P(n+2) - 2

Para encontrar S(n), podemos simplemente calcular el (n+3)’ésimo y (n+2) número de Perrin y restar 2 del resultado.
Este artículo es una contribución de DANISH_RAZA . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

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