# Find value of (1^n + 2^n + 3^n + 4^n ) mod 5

• Last Updated : 07 Apr, 2021

You are given an positive integer n. You have to find the value of (1n +2n + 3n + 4n ) mod 5.
Note : Value of n may be very large of order 1015
Examples:

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

Basic Approach : If you will solve this question with a very basic approach of finding value of (1n +2n + 3n + 4n ) and then finding its modulo value for 5, you will certainly get your answer but for the larger value of n we must got wrong answer as you will be unable to store value of (1n +2n + 3n + 4n ) properly.
Better and Proper Approach : Before proceeding to solution lets go through some of periodical properties of power of 2, 3 & 4.

• f(n) = 2n is periodical for n = 4 in terms of last digit. i.e. last digit of 2n always repeat for next 4th value of n. (ex: 2, 4, 8, 16, 32, 64…)
• f(n) = 3n is periodical for n = 4 in terms of last digit. i.e. last digit of 3n always repeat for next 4th value of n.(ex: 3, 9, 27, 81, 243, 729…)
• f(n) = 4n is periodical for n = 2 in terms of last digit. i.e. last digit of 4n always repeat for next 2nd value of n.(ex: 4, 16, 64, 256..)
• 1n is going to be 1 always, independent of n.

So, If we will have a close look for periodicity of f(n) = (1n +2n + 3n + 4n ) we will get that its periodicity is also 4 and its last digits occurs as :

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

Observing above periodicity we can see that if (n%4==0) result of f(n)%5 is going to be 4 other wise result = 0. So, rather than calculating actual value of f(n) and then obtaining its value with mod 5 we can easily get result only be examine value of n.

## C++

 `// Program to find value of f(n)%5``#include ``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

 ``

## Javascript

 ``

Output:

```0
4```

My Personal Notes arrow_drop_up