斐波那契数列第n项

1:斐波那契数列第n项
在斐波那契数列中,Fib0=0,Fib1=1,Fibn=Fibn−1+Fibn−2(n>1)。

给定整数n,求Fibn mod10000。

输入格式
输入包含多组测试用例。

每个测试用例占一行,包含一个整数n。

当输入用例n=-1时,表示输入终止,且该用例无需处理。

输出格式
每个测试用例输出一个整数表示结果。

每个结果占一行。

数据范围
0≤n≤2∗109
输入样例:
0
9
999999999
1000000000
-1
输出样例:
0
34
626
6875

思路:矩阵快速幂 , 每次取模 。

#include <stdio.h>
#include <string.h>
long long n,mod=10000;
void Matrix1(long long a[2],long long b[2][2])
{
	long long c[2]={0};
	for(int j=0;j<2;j++)
		{
			for(int k=0;k<2;k++)
			{
				c[j]=(c[j]+a[k]*b[k][j]%mod)%mod;
			}
		}
		memcpy(a,c,sizeof(c));
}
void Matrix2(long long b[2][2])
{
	long long c[2][2]={0};
	for(int i=0;i<2;i++)
	{
		for(int j=0;j<2;j++)
		{
			for(int k=0;k<2;k++)
			{
				c[i][j]=(c[i][j]+b[i][k]*b[k][j]%mod)%mod;
			}
		 } 
	}
	memcpy(b,c,sizeof(c));
}
int main()
{
	while(~scanf("%lld",&n))
    {   
        if(n==-1) break;
        else
        {  
            long long a[2]={0,1};
            long long b[2][2]={0,1,1,1};
	        while(n)
	        {
		    if(n&1)	Matrix1(a,b);
		    Matrix2(b);
		    n>>=1;
	        }
	    printf("%lld
",a[0]);
        }
    }
    return 0;
}

2:斐波那契数列 10’
描述
已知斐波那契数列 1,1,2,3,5,8,13,21每一项是前两项的和。

请告诉laofu,第202003281331项的最后一位是多少。(大家写到这题,是不是这个时间呢,嘿嘿~)

例如:第八项的最后一位是1

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个数字,填写多余的内容将无法得分。

思路:最后一位只和最后一位有关,所以每次模10取最后一位。

#include <stdio.h>
#include <string.h>
long long n,mod=10,a[2]={0,1},b[2][2]={0,1,1,1};
void Matrix1(long long a[2],long long b[2][2])
{
	long long c[2]={0};
	for(int j=0;j<2;j++)
		{
			for(int k=0;k<2;k++)
			{
				c[j]=(c[j]+a[k]*b[k][j]%mod)%mod;
			}
		}
		memcpy(a,c,sizeof(c));
}
void Matrix2(long long b[2][2])
{
	long long c[2][2]={0};
	for(int i=0;i<2;i++)
	{
		for(int j=0;j<2;j++)
		{
			for(int k=0;k<2;k++)
			{
				c[i][j]=(c[i][j]+b[i][k]*b[k][j]%mod)%mod;
			}
		 } 
	}
	memcpy(b,c,sizeof(c));
}
int main()
{
	scanf("%lld",&n);
    while(n)
	   {
		  if(n&1)	Matrix1(a,b);
		  Matrix2(b);
		  n>>=1;
	   }
    printf("%lld
",a[0]);
    return 0;
}
原文地址:https://www.cnblogs.com/fxzemmm/p/14847977.html