标签: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