AcWing 205. 斐波那契 (板子题)

🎮 🎮 🎮

一般来说遇到这种递推的题目,或者说变化形式是一种线性递推的运算,我们就可以初步判断这道题目是矩阵乘法了.

#define mod 10000
struct matrix{ll x[3][3];};
matrix multi(matrix a,matrix b)//矩阵相乘
{
	matrix temp;
	memset(temp.x,0,sizeof(temp.x));
	for(int i=0;i<2;i++)
		for(int j=0;j<2;j++)
			for(int k=0;k<2;k++)
			{
				temp.x[i][j]+=a.x[i][k]*b.x[k][j];
				temp.x[i][j]%=mod;//负数取模的问题,除法取模
			}
	return temp;
}
matrix quick_multi(matrix a,ll n)//矩阵快速幂
{
	matrix temp=a;
	n--;
	while(n){
		if(n&1)
			temp=multi(temp,a);
		a=multi(a,a);
		n>>=1;
	}
	return temp;
}
int main()
{
    int n;
    while(cin>>n)
    {
        if(n<0) break;
        if(n==0) cout<<0<<endl;
        else if(n==1) cout<<1<<endl;
        else 
        {
            matrix ans;
            ans.x[0][0] = 1,ans.x[0][1] = 1,ans.x[1][0] = 1,ans.x[1][1] = 0;
            --n;
            ans = quick_multi(ans,n);
            matrix tmp;
            tmp.x[0][0] = 1,tmp.x[0][1] = tmp.x[1][0] = tmp.x[1][1] = 0;
            ans= multi(ans,tmp);
            cout<<ans.x[0][0]<<endl;
        }
    }
    return 0;
}
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值