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>
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