Encuentra el valor de (1^n + 2^n + 3^n + 4^n) mod 5

Se le da un número entero positivo n. Tienes que encontrar el valor de (1 n +2 n + 3 n + 4 n ) mod 5. 
Nota: El valor de n puede ser muy grande del orden de 10 15
Ejemplos: 
 

Input : n = 4
Output : 4
Explanation : (14 + 24 + 34 + 44)mod 5 = (1+16+81+256)mod 5 = 354 mod 5 = 4

Input : n = 2
Output : 0
Explanation : (12 + 22 + 32 + 42)mod 5 = (1+4+9+16)mod 5 = 30 mod 5 = 0

Enfoque básico: si resuelve esta pregunta con un enfoque muy básico de encontrar el valor de (1 n +2 n + 3 n + 4 n ) y luego encontrar su valor de módulo para 5, ciertamente obtendrá su respuesta pero para el más grande valor de n debemos obtener una respuesta incorrecta ya que no podrá almacenar el valor de (1 n +2 n + 3 n + 4 n ) correctamente. 
Enfoque mejor y adecuado: antes de proceder a la solución, analicemos algunas de las propiedades periódicas de la potencia de 2, 3 y 4. 
 

  • f(n) = 2 n es periódica para n = 4 en términos del último dígito. es decir, el último dígito de 2 n siempre se repite para el próximo cuarto valor de n. (Ej: 2, 4, 8, 16, 32, 64…)
  • f(n) = 3 n es periódica para n = 4 en términos del último dígito. es decir, el último dígito de 3 n siempre se repite para el próximo cuarto valor de n (por ejemplo, 3, 9, 27, 81, 243, 729…)
  • f(n) = 4 n es periódica para n = 2 en términos del último dígito. es decir, el último dígito de 4 n siempre se repite para el siguiente segundo valor de n (por ejemplo, 4, 16, 64, 256 ..)
  • 1 n va a ser 1 siempre, independientemente de n.

Entonces, si observamos de cerca la periodicidad de f(n) = (1 n +2 n + 3 n + 4 n ) obtendremos que su periodicidad también es 4 y sus últimos dígitos se producen como: 
 

  • para n = 1, f(n) = 10
  • para n = 2, f(n) = 30
  • para n = 3, f(n) = 100
  • para n = 4, f(n) = 354
  • para n = 5, f(n) = 1300

Observando la periodicidad anterior, podemos ver que si (n%4==0) el resultado de f(n)%5 va a ser 4, de lo contrario, el resultado = 0. Entonces, en lugar de calcular el valor real de f(n) y luego obtener su valor con mod 5 podemos obtener resultados fácilmente solo examinando el valor de n. 
 

C++

// Program to find value of f(n)%5
#include <bits/stdc++.h>
using namespace std;
 
// function for obtaining remainder
int fnMod(int n)
{
    // calculate res based on value of n
    return (n % 4) ? 0 : 4;
}
 
// driver program
int main()
{
    int n = 43;
    cout << fnMod(n) << endl;
    n = 44;
    cout << fnMod(n);
    return 0;
}

Java

// Program to find value of f(n)% 5
 
class GFG
{
    // function for obtaining remainder
    static int fnMod(int n)
    {
        // calculate res based on value of n
        return (n % 4 != 0) ? 0 : 4;
    }
     
    // Driver code
    public static void main (String[] args)
    {
        int n = 43;
        System.out.println(fnMod(n));
        n = 44;
        System.out.print(fnMod(n));
    }
}
 
// This code is contributed by Anant Agarwal.

Python

# program to find f(n) mod 5
def fnMod (n):
    res = 4 if (n % 4 == 0) else 0
    return res
 
# driver section
n = 43
print (fnMod(n))
n = 44
print (fnMod(n))

C#

// C# Program to find value of f(n) % 5
using System;
 
class GFG {
     
    // function for obtaining remainder
    static int fnMod(int n)
    {
        // calculate res based on value of n
        return (n % 4 != 0) ? 0 : 4;
    }
     
    // Driver code
    public static void Main ()
    {
        int n = 43;
        Console.WriteLine(fnMod(n));
        n = 44;
        Console.Write(fnMod(n));
    }
}
 
// This code is contributed by nitin mittal.

PHP

<?php
// PHP Program to find value of f(n)%5
 
// function for obtaining remainder
function fnMod($n)
{
     
    // calculate res based
    // on value of n
    return ($n % 4) ? 0 : 4;
}
 
// Driver Code
{
    $n = 43;
    echo fnMod($n),"\n" ;
    $n = 44;
    echo fnMod($n);
    return 0;
}
 
// This code is contributed by nitin mittal.
?>

Javascript

<script>
// JavaScript program to find value of f(n)% 5
 
// function for obtaining remainder
    function fnMod(n)
    {
        // calculate res based on value of n
        return (n % 4 != 0) ? 0 : 4;
    }
   
 
// Driver Code
 
        let n = 43;
        document.write(fnMod(n) + "<br/>");
        n = 44;
        document.write(fnMod(n)  + "<br/>");
 
// This code is contributed by splevel62.
</script>
Producción: 

0
4

 

Publicación traducida automáticamente

Artículo escrito por Shivam.Pradhan 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 *