标签:style http io ar color os sp for on
In the Fibonacci integer sequence, F0 = 0, F1 = 1, and Fn = Fn ? 1 + Fn ? 2 for n ≥ 2. For example, the first ten terms of the Fibonacci sequence are:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …
An alternative formula for the Fibonacci sequence is
.
Given an integer n, your goal is to compute the last 4 digits of Fn.
Hint
As a reminder, matrix multiplication is associative, and the product of two 2 × 2 matrices is given by
.
Also, note that raising any 2 × 2 matrix to the 0th power gives the identity matrix:
.
0 9 1000000000 -1
0 34 6875
题目大意:
求斐波那契数列的第n项的最后四位数
思路:
根据题意,求的最后四位即可(即对10000求模),所以再计算过程中不需要保留全部的有效位,根据斐波那契数列求得的规律( f(n) = f(n-1)+f(n-2) )来看,其后四位的数字有一定的规律可循,就是说后四位称周期性出现,我们要做的是求出这个周期T,并保留一个周期内的数据,这样就可以根据输入,快速输出对应的答案.
#include<stdio.h>
#define mod 10000 //对mod求模
int fib[20000]; //保留一个周期内的数据
int main()
{
int n,T;
fib[0] = 0;
fib[1] = 1;
int i = 2;
do
{
fib[i] = (fib[i - 1] + fib[i - 2]) % mod;
++i;
}while(fib[i - 1] != 1 || fib[i - 2] != 0);
T=i-2;//求得周期
while(scanf("%d",&n) && n!=-1){
printf("%d\n",fib[n%T]);
}
return 0;
}标签:style http io ar color os sp for on
原文地址:http://blog.csdn.net/u012437355/article/details/41593357