给定数字“ 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