Program to find last two digits of Nth Fibonacci number

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<bits/stdc++.h>
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] = 0;
    f[1] = 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[300] = {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] = 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 ()
    {
          
        // Precomputing units digit of 
        // first 300 Fibonacci numbers
        long []f = new long[300];
        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

<?php
// Program to find last two 
// digits of n-th Fibonacci 
// number
  
// Fills f[] with first 
// 300 fibonacci numbers
function precomput()
{
    /* 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 ($i = 2; $i < 300; $i++)
        $f[$i] = ($f[$i - 1] + 
                  $f[$i - 2]) % 100;
      
    return $f;
}
  
// Returns last two digits 
// of n'th Fibonacci Number
function findLastDigit($f, $n)
{
    return $f[$n % 300];
}
  
// Driver code
  
// Precomputing units digit 
// of first 300 Fibonacci numbers
$f = precomput();
  
$n = 1;
echo findLastDigit($f, $n) . "\n";
$n = 61;
echo findLastDigit($f, $n) . "\n";
$n = 7;
echo findLastDigit($f, $n) . "\n";
$n = 67;
echo findLastDigit($f, $n) . "\n";
  
// This code is contributed by mits.
?>


Output:

1
61
13
53


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 write comments if you find anything incorrect, or you want to share more information about the topic discussed above.


Improved By : vt_m, Mithun Kumar




Practice Tags :
Article Tags :

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

Recommended Posts:



2.2 Average Difficulty : 2.2/5.0
Based on 7 vote(s)






User Actions