Programa para encontrar el valor de P(N + r) para un polinomio de grado N tal que P(i) = 1 para 1 ≤ i ≤ N y P(N + 1) = a

Dados tres enteros positivos N , R y A y un polinomio P(X) de grado N , P(i) = 1 para 1 ≤ i ≤ N y el valor de P(N + 1) es A , la tarea es encuentra el valor de P(N + R) .

Ejemplos:

Entrada: N = 1, R = 3, A = 2
Salida: 4
Explicación:
La ecuación del polinomio dado es P(x) = x. Por lo tanto, el valor de P(N + R) = P(4) = 4.

Entrada: N = 2, R = 3, A = 1
Salida: 1

Enfoque: El problema dado se puede resolver encontrando la expresión del polinomio dado P(X) y luego calculando el valor de P(N + R) . La forma general de un polinomio de grado N es:

P(x) = k * (x – x 1 ) * (x – x 2 ) * (x – x 3 ) * … *(x – x n ) + c
donde x 1 , x 2 , x 3 , …, x n son las raíces P(x) donde k y c son constantes arbitrarias.

Sea F(x) otro polinomio de grado N tal que
F(x) = P(x) + c — (1)

Ahora, si c = -1, F(x) = 0 ya que P(x) = 1 para x ∈ [1, N].
⇒ F(x) tiene N raíces que son iguales a 1, 2, 3, …, N.
Por lo tanto, F(x) = k * (x – 1) * (x – 2) * … * (x – N) , para todo c = -1.

Reordenando términos en la ecuación (1),  
P(x) = F(x) – c 
P(x) = k * (x – 1) * (x – 2) * … *(x – N) + 1 — (2 )

Poniendo x = N + 1 en la ecuación (2),  
k = (a – 1) / N!

Por lo tanto, P(x) = ((a – 1)/N!) * (x – 1) * (x – 2) * … *(x – N) + 1 — (3)

Por lo tanto, la idea es sustituir el valor de (N + R) en la ecuación (3) e imprimir el valor de la expresión como resultado. Siga los pasos a continuación para resolver el problema:

  • Inicialice una variable, digamos ans , como el valor de (A – 1) / N! .
  • Iterar sobre el rango [1, N] usando la variable i y actualizar el valor de ans como ans * (N + R – i) .
  • Después de completar los pasos anteriores, imprima el valor de (ans + 1) como resultado.

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 calculate
// factorial of N
int fact(int n)
{
     
    // Base Case
    if (n == 1 || n == 0)
        return 1;
         
    // Otherwise, recursively
    // calculate the factorial
    else
        return n * fact(n - 1);
}
 
// Function to find the value of
// P(n + r) for polynomial P(X)
int findValue(int n, int r, int a)
{
     
    // Stores the value of k
    int k = (a - 1) / fact(n);
 
    // Store the required answer
    int answer = k;
 
    // Iterate in the range [1, N] and
    // multiply (n + r - i) with answer
    for(int i = 1; i < n + 1; i++)
        answer = answer * (n + r - i);
         
    // Add the constant value C as 1
    answer = answer + 1;
 
    // Return the result
    return answer;
}
 
// Driver Code
int main()
{
    int N = 1;
    int A = 2;
    int R = 3;
     
    cout << (findValue(N, R, A));
     
    return 0;
}
 
// This code is contributed by mohit kumar 29

Java

// Java program for the above approach
import java.util.*;
class GFG{
   
// Function to calculate
// factorial of N
static int fact(int n)
{
     
    // Base Case
    if (n == 1 || n == 0)
        return 1;
         
    // Otherwise, recursively
    // calculate the factorial
    else
        return n * fact(n - 1);
}
 
// Function to find the value of
// P(n + r) for polynomial P(X)
static int findValue(int n, int r, int a)
{
     
    // Stores the value of k
    int k = (a - 1) / fact(n);
 
    // Store the required answer
    int answer = k;
 
    // Iterate in the range [1, N] and
    // multiply (n + r - i) with answer
    for(int i = 1; i < n + 1; i++)
        answer = answer * (n + r - i);
         
    // Add the constant value C as 1
    answer = answer + 1;
 
    // Return the result
    return answer;
}
 
// Driver Code
public static void main(String args[])
{
    int N = 1;
    int A = 2;
    int R = 3;
    System.out.print(findValue(N, R, A));
}
 
}
 
// This code is contributed by SURENDRA_GANGWAR.

Python3

# Python program for the above approach
 
# Function to calculate
# factorial of N
def fact(n):
   
    # Base Case
    if n == 1 or n == 0:
        return 1
       
    # Otherwise, recursively
    # calculate the factorial
    else:
        return n * fact(n-1)
 
# Function to find the value of
# P(n + r) for polynomial P(X)
def findValue(n, r, a):
 
    # Stores the value of k
    k = (a-1) // fact(n)
 
    # Store the required answer
    answer = k
 
    # Iterate in the range [1, N] and
    # multiply (n + r - i) with answer
    for i in range(1, n + 1):
        answer = answer*(n + r-i)
 
    # Add the constant value C as 1
    answer = answer + 1
 
    # Return the result
    return answer
 
 
# Driver Code
 
N = 1
A = 2
R = 3
 
print(findValue(N, R, A))

C#

// C# program for the above approach
using System;
 
class GFG{
 
// Function to calculate
// factorial of N
static int fact(int n)
{
     
    // Base Case
    if (n == 1 || n == 0)
        return 1;
         
    // Otherwise, recursively
    // calculate the factorial
    else
        return n * fact(n - 1);
}
 
// Function to find the value of
// P(n + r) for polynomial P(X)
static int findValue(int n, int r, int a)
{
     
    // Stores the value of k
    int k = (a - 1) / fact(n);
 
    // Store the required answer
    int answer = k;
 
    // Iterate in the range [1, N] and
    // multiply (n + r - i) with answer
    for(int i = 1; i < n + 1; i++)
        answer = answer * (n + r - i);
         
    // Add the constant value C as 1
    answer = answer + 1;
 
    // Return the result
    return answer;
}
 
// Driver Code
static public void Main()
{
    int N = 1;
    int A = 2;
    int R = 3;
     
    Console.Write((findValue(N, R, A)));
}
}
 
// This code is contributed by code_hunt

Javascript

<script>
 
// JavaScript program to implement
// the above approach
 
// Function to calculate
// factorial of N
function fact(n)
{
      
    // Base Case
    if (n == 1 || n == 0)
        return 1;
          
    // Otherwise, recursively
    // calculate the factorial
    else
        return n * fact(n - 1);
}
  
// Function to find the value of
// P(n + r) for polynomial P(X)
function findValue(n, r, a)
{
      
    // Stores the value of k
    let k = (a - 1) / fact(n);
  
    // Store the required answer
    let answer = k;
  
    // Iterate in the range [1, N] and
    // multiply (n + r - i) with answer
    for(let i = 1; i < n + 1; i++)
        answer = answer * (n + r - i);
          
    // Add the constant value C as 1
    answer = answer + 1;
  
    // Return the result
    return answer;
}
 
// Driver code
    let N = 1;
    let A = 2;
    let R = 3;
    document.write(findValue(N, R, A));
  
 // This code is contributed by code_hunt.
</script>
Producción: 

4

 

Complejidad temporal: O(N)
Espacio auxiliar: O(1)

Publicación traducida automáticamente

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