📜  程序查找第N个斐波纳契数的最后两位数字

📅  最后修改于: 2021-04-27 21:30:03             🧑  作者: Mango

给定数字“ n”,编写一个输出第n个斐波那契数字的后两位数字(“ n”也可以是一个较大的数字)的函数。
例子:

Input : n = 65
Output : 65

Input : n = 365
Output : 65

建议:在继续解决方案之前,请先在“实践”上解决它。

一个简单的解决方案是找到第n个斐波那契数并打印其最后两位数字。但是N可能很大,所以它不起作用。
更好的解决方案是使用第300个斐波那契数后的最后两位数开始重复的事实。
1)求m = n%300。
2)返回第m个斐波那契数。

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] = 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


Javascript


输出:

1
61
13
53