You are given an positive integer n. You have to find the value of (1^{n} +2^{n} + 3^{n} + 4^{n} ) mod 5. **Note :** Value of n may be very large of order 10^{15}.

Examples:

Input : n = 4 Output : 4 Explanation : (1^{4}+ 2^{4}+ 3^{4}+ 4^{4})mod 5 = (1+16+81+256)mod 5 = 354 mod 5 = 4 Input : n = 2 Output : 0 Explanation : (1^{2}+ 2^{2}+ 3^{2}+ 4^{2})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 (1^{n} +2^{n} + 3^{n} + 4^{n} ) 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 (1^{n} +2^{n} + 3^{n} + 4^{n} ) properly. **Better and Proper Approach : **Before proceeding to solution lets go through some of periodical properties of power of 2, 3 & 4.

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

So, If we will have a close look for periodicity of f(n) = (1^{n} +2^{n} + 3^{n} + 4^{n} ) 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 <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>` |

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