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

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

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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

 ` `

Output:

```0
4
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : nitin mittal

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.