hdu 4549 M斐波那契数列 数论 矩阵

#include<iostream>
using namespace std;
typedef long long LL;

struct mat{
	LL m[2][2];
};

mat mul(mat a,mat b){
	mat ans;
	for(int i=0;i<2;i++){
		for(int j=0;j<2;j++){
			ans.m[i][j]=0;
			for(int k=0;k<2;k++){
				ans.m[i][j]+=a.m[i][k]*b.m[k][j];
				ans.m[i][j]%=1000000006;
			}
			
		}
	}
	return ans;
}

mat qbm(mat a,LL b){
	mat ans={
	1,0,
	0,1
	};
	mat res=a;
	while(b){
		if(b&1) ans=mul(ans,res);
		res=mul(res,res);
		b>>=1;
	}
	return ans;
}

LL qbn(LL a,LL n){
	LL ans=1;
	LL res=a;
	while(n){
		if(n&1){
			ans*=res;
			ans%=1000000007;
		}
		res*=res;
		res%=1000000007;
		n>>=1;
	}
	return ans;
}

int main(){
	LL a,b,n;	
	while(~scanf("%lld%lld%lld",&a,&b,&n)){
	mat f={
	0,1,
	1,1
	};
//	cout<<a<<"  "<<b<<" "<<n;
	mat t=qbm(f,n);
//	printf("t[0][0] %lld   t[0][1] %lld   t[1][0] %lld    t[1][1] %lld\n",t.m[0][0],t.m[0][1],t.m[1][0],t.m[1][1]);
	LL ans=qbn(a,t.m[0][0])*qbn(b,t.m[0][1])%1000000007;
	
	cout<<ans<<endl;
}
}
全部评论

相关推荐

Natrium_:这时间我以为飞机票
点赞 评论 收藏
分享
评论
点赞
收藏
分享
正在热议
# 25届秋招总结 #
443603次浏览 4524人参与
# 春招别灰心,我们一人来一句鼓励 #
42308次浏览 539人参与
# 北方华创开奖 #
107485次浏览 600人参与
# 地方国企笔面经互助 #
7978次浏览 18人参与
# 同bg的你秋招战况如何? #
77334次浏览 569人参与
# 实习必须要去大厂吗? #
55824次浏览 961人参与
# 阿里云管培生offer #
120503次浏览 2222人参与
# 虾皮求职进展汇总 #
116484次浏览 887人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11711次浏览 292人参与
# 实习,投递多份简历没人回复怎么办 #
2455078次浏览 34862人参与
# 提前批简历挂麻了怎么办 #
149970次浏览 1979人参与
# 在找工作求抱抱 #
906139次浏览 9423人参与
# 如果公司给你放一天假,你会怎么度过? #
4764次浏览 55人参与
# 你投递的公司有几家约面了? #
33209次浏览 188人参与
# 投递实习岗位前的准备 #
1196082次浏览 18551人参与
# 机械人春招想让哪家公司来捞你? #
157650次浏览 2267人参与
# 双非本科求职如何逆袭 #
662415次浏览 7397人参与
# 发工资后,你做的第一件事是什么 #
12811次浏览 62人参与
# 工作中,努力重要还是选择重要? #
35944次浏览 384人参与
# 简历中的项目经历要怎么写? #
86956次浏览 1517人参与
# 参加完秋招的机械人,还参加春招吗? #
20156次浏览 240人参与
# 我的上岸简历长这样 #
452084次浏览 8089人参与
牛客网
牛客企业服务