# Program to find last two digits of Nth Fibonacci number

• Difficulty Level : Easy
• Last Updated : 25 May, 2022

Given a number ‘n’, write a function that prints the last two digits of n-th (‘n’ can also be a large number) Fibonacci number.
Examples:

```Input : n = 65
Output : 65

Input : n = 365
Output : 65```

Recommended: Please solve it on “PRACTICE” first, before moving on to the solution.

A simple solution is to find n-th Fibonacci number and print its last two digit. But N can be very large, so it wouldn’t work.
A better solution is to use the fact that after 300-th Fibonacci number last two digits starts repeating.
1) Find m = n % 300.
2) Return m-th Fibonacci number.

## C++

 `// Program to find last two digits of n-th``// Fibonacci number``#include``using` `namespace` `std;``typedef` `long` `long` `int` `ll;`` ` `// Fills f[] with first 300 fibonacci numbers``void` `precomput(ll f[])``{``    ``/* 0th and 1st number of the series are 0 and 1*/``    ``f = 0;``    ``f = 1;`` ` `    ``/* Add the previous 2 numbers in the series``       ``and store last two digits of result */``    ``for` `(ll i = 2; i < 300; i++)``        ``f[i] = (f[i-1] + f[i-2])%100;``}`` ` `// Returns last two digits of n'th Fibonacci``// Number``int` `findLastDigit(ll f[], ``int` `n)``{``    ``return` `f[n%300];``}`` ` `/* Driver program to test above function */``int` `main ()``{``    ``// Precomputing units digit of first 300``    ``// Fibonacci numbers``    ``ll f = {0};``    ``precomput(f);` `    ``ll n = 1;``    ``cout << findLastDigit(f, n) << endl;``    ``n = 61;``    ``cout << findLastDigit(f, n) << endl;``    ``n = 7;``    ``cout << findLastDigit(f, n) << endl;``    ``n = 67;``    ``cout << findLastDigit(f, n) << endl;``    ``return` `0;``}`

## Java

 `// Program to find last two digits of``// n-th Fibonacci number``import` `java.util.Arrays;``class` `GFG {``    ` `    ``// Fills f[] with first 300``    ``// fibonacci numbers``    ``static` `void` `precomput(``long` `f[])``    ``{``        ``/* 0th and 1st number of the``        ``series are 0 and 1*/``        ``f[``0``] = ``0``;``        ``f[``1``] = ``1``;``      ` `        ``/* Add the previous 2 numbers in``        ``the series and store last two``        ``digits of result */``        ``for` `(``int` `i = ``2``; i < ``300``; i++)``            ``f[i] = (f[i-``1``] + f[i-``2``]) % ``100``;``    ``}``      ` `    ``// Returns last two digits of n'th``    ``// Fibonacci Number``    ``static` `long` `findLastDigit(``long` `f[], ``int` `n)``    ``{``        ``return` `(f[(n%``300``)]);``    ``}``      ` `    ``/* Driver program to test above function */``    ``public` `static` `void` `main (String args[])``    ``{``        ``// Precomputing units digit of``        ``// first 300 Fibonacci numbers``        ``long` `f[] = ``new` `long``[``300``];``        ``Arrays.fill(f,``0``);``        ``precomput(f);``     ` `        ``int` `n = ``1``;``        ``System.out.println(findLastDigit(f, n));``        ``n = ``61``;``        ``System.out.println(findLastDigit(f, n));``        ``n = ``7``;``        ``System.out.println(findLastDigit(f, n));``        ``n = ``67``;``        ``System.out.println(findLastDigit(f, n));``    ``}``}` `/*This code is contributed by Nikita Tiwari.*/`

## Python3

 `# Python code to find last two``# digits of n-th Fibonacci number` `def` `precomput(f):``    ` `    ``# 0th and 1st number of the series``    ``# are 0 and 1``    ``f.append(``0``)``    ``f.append(``1``)``    ` `    ``# Add the previous 2 numbers in the series``    ``# and store last two digits of result``    ``for` `i ``in` `range``(``2``,``300``):``        ``f.append((f[i``-``1``] ``+` `f[i``-``2``]) ``%` `100``)` `# Returns last two digits of``# n'th Fibonacci Number    ``def` `findLastDigit(f,n):``    ``return` `f[n``%``300``]``    ` `# driver code``f ``=` `list``()``precomput(f)``n ``=` `1``print``(findLastDigit(f, n))``n ``=` `61``print``(findLastDigit(f, n))``n ``=` `7``print``(findLastDigit(f, n))``n ``=` `67``print``(findLastDigit(f, n))` `# This code is contributed by "Abhishek Sharma 44"`

## C#

 `// Program to find last two digits of``// n-th Fibonacci number``using` `System;` `class` `GFG {``    ` `    ``// Fills f[] with first 300``    ``// fibonacci numbers``    ``static` `void` `precomput(``long` `[]f)``    ``{``        ` `        ``/* 0th and 1st number of the``        ``series are 0 and 1*/``        ``f = 0;``        ``f = 1;``    ` `        ``/* Add the previous 2 numbers in``        ``the series and store last two``        ``digits of result */``        ``for` `(``int` `i = 2; i < 300; i++)``            ``f[i] = (f[i-1] + f[i-2]) % 100;``    ``}``    ` `    ``// Returns last two digits of n'th``    ``// Fibonacci Number``    ``static` `long` `findLastDigit(``long` `[]f, ``int` `n)``    ``{``        ``return` `(f[(n % 300)]);``    ``}``    ` `    ``/* Driver program to test above function */``    ``public` `static` `void` `Main ()``    ``{``        ` `        ``// Precomputing units digit of``        ``// first 300 Fibonacci numbers``        ``long` `[]f = ``new` `long``;``        ``precomput(f);``    ` `        ``int` `n = 1;``        ``Console.WriteLine(findLastDigit(f, n));``        ` `        ``n = 61;``        ``Console.WriteLine(findLastDigit(f, n));``        ` `        ``n = 7;``        ``Console.WriteLine(findLastDigit(f, n));``        ` `        ``n = 67;``        ``Console.WriteLine(findLastDigit(f, n));``    ``}``}` `// This code is contributed by anuj_67.`

## PHP

 ``

## Javascript

 ``

Output:

```1
61
13
53```

Time Complexity: O(300), it will run in constant time.
Auxiliary Space: O(300), no extra space is required, so it is a constant.

My Personal Notes arrow_drop_up