So Easy!

So Easy!
题面


题意
给一个n然后利用公式求出S(n)的值
分析
这是一道矩阵快速幂的模板题目
我们设 ( a + b ) n = x + y b ( a 1 ) 2 &lt; b &lt; a 2 (a+√b)^{n}=x+y√b 其中(a-1) ^{2}&lt; b &lt; a^{ 2} (a+b)n=x+yb(a1)2<b<a2,那么ceil(√b)=a;我们可以知道 ( a + b ) n = x n + y n b = ( a + b ) n 1 ( a + b ) = ( x n . . 1 + y n . . 1 b ) ( a + b ) = ( x n . . 1 a + y n . . 1 b ) + ( a y n . . 1 + x n . . 1 ) b , (a+√b)^{n}=x_n+y_n√b=(a+√b)^{n-1}*(a+√b)=(x_n._-._1+y_n._-._1√b)*(a+√b)=(x_n._-._1∗a+y_n._-._1b)+(a∗y_n._-._1+x_n._-._1)∗√b,这时,我们就可以得到一个递归式,而且这个递归式可以用矩阵行列式表示, (a+b)n=xn+ynb=(a+b)n1(a+b)=(xn..1+yn..1b)(a+b)=(xn..1a+yn..1b)+(ayn..1+xn..1)b,
AC代码

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
ll a,m,b,n;
struct martix{
	ll mo[3][3];
	martix(){
		memset(mo,0,sizeof(mo));
	}
};///定义一种新的结构类型(矩阵)
martix mul(martix a,martix b){
	martix c;
        for(ll i=1;i<=2;i++){
		for(ll j=1;j<=2;j++){
			for(ll k=1;k<=2;k++){
			c.mo[i][j]=(c.mo[i][j]+a.mo[i][k]*b.mo[k][j])%m;
			}
		}
        }
        return c;
}///计算二阶与二阶的行列式相乘
martix powmo(martix al,ll n){
  martix T;
	        T.mo[1][1]=1;
		T.mo[2][2]=1;///初始化为单位矩阵
	while(n){
		if(n&1){
			T=mul(al,T);
		}
		n>>=1;
		al=mul(al,al);
	}
	return T;
}///计算行列式al的n次方
int main(){
	while(cin>>a>>b>>n>>m) {
		martix q;
		q.mo[1][1]=a;q.mo[1][2]=b;
	        q.mo[2][1]=1;q.mo[2][2]=a;
		martix res=powmo(q,n);
		cout<<(2*res.mo[1][1])%m<<endl;
	}
	return 0;
}
全部评论

相关推荐

03-16 11:07
南开大学 Java
牛马人的牛马人生:快手卡实习经历的
点赞 评论 收藏
分享
03-04 22:09
已编辑
南昌大学 golang
西北上单:29届? 请你去三角洲猛攻
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 长得好看会提高面试通过率吗? #
4363次浏览 47人参与
# 离家近房租贵VS离家远但房租低,怎么选 #
16917次浏览 137人参与
# 巨人网络春招 #
11540次浏览 228人参与
# 沪漂/北漂你觉得哪个更苦? #
1616次浏览 41人参与
# 你的实习产出是真实的还是包装的? #
3196次浏览 53人参与
# 春招至今,你的战绩如何? #
16021次浏览 146人参与
# 米连集团26产品管培生项目 #
7376次浏览 226人参与
# HR最不可信的一句话是__ #
1107次浏览 32人参与
# AI面会问哪些问题? #
971次浏览 24人参与
# 你做过最难的笔试是哪家公司 #
1306次浏览 23人参与
# AI时代,哪个岗位还有“活路” #
2930次浏览 53人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152945次浏览 889人参与
# 简历第一个项目做什么 #
32180次浏览 363人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
8029次浏览 43人参与
# XX请雇我工作 #
51164次浏览 171人参与
# 简历中的项目经历要怎么写? #
311119次浏览 4271人参与
# 投格力的你,拿到offer了吗? #
178382次浏览 891人参与
# 你最满意的offer薪资是哪家公司? #
77008次浏览 375人参与
# AI时代,哪些岗位最容易被淘汰 #
64819次浏览 891人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187635次浏览 1123人参与
# 你怎么看待AI面试 #
180882次浏览 1318人参与
# 正在春招的你,也参与了去年秋招吗? #
364407次浏览 2642人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务