[矩阵乘法] CF 1182 E.Product Oriented Recurrence

Fn = c2n-6 * Fn-1 * Fn-2 * Fn-3,求 F.

推一下式子,变成 F* c= ( Fn-1 * cn-1 ) * ( Fn-2 * cn-2 ) * ( Fn-3 * cn-3 )

记 Tn = Fn * cn,就有 Tn = Tn-1 * Tn-2 * Tn-3 .

再推一下,Tn = Tn-22 * Tn-32 * Tn-4

发现数列的指数是可以 ( a , b , c )   ----- >   ( b+a , c+a , a ) 递推的,

这个显然是可以矩阵乘法优化的,式子很容易推就不放了。

要注意的是矩阵乘法求出来的是指数,所以中间过程是对 p - 1 取模,

因为 at mod p = at mod (p-1) mod p,p为质数,a 和 p 互质 .

 1 #include<bits/stdc++.h>
 2 #define rep(i,a,b) for(register int i=a;i<=b;++i)
 3 #define rpd(i,a,b) for(register int i=a;i>=b;--i)
 4 #define rep1(i,x) for(register int i=head[x];i;i=nxt[i])
 5 typedef long long ll;
 6 const int N=10+5;
 7 const ll Mod=1000000007LL;
 8 using namespace std;
 9 inline int read(){
10     int x=0,f=1;char ch=getchar();
11     while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
12     while(isdigit(ch)){x=x*10+ch-'0';ch=getchar();}
13     return x*f;
14 }
15 ll n,f1,f2,f3,c0;ll a[N][N],f[N][N],ans[N][N],a1[N][N],b1[N][N],anss[N][N];
16 void work(ll a[N][N],ll b[N][N],ll c[N][N],int x,int y){
17     rep(i,1,x)rep(j,1,3)a1[i][j]=a[i][j];
18     rep(i,1,y)rep(j,1,3)b1[i][j]=b[i][j];
19     rep(i,1,x)rep(j,1,y){
20         ll sum=0;
21         rep(t,1,3)(sum+=(a1[i][t]*b1[t][j])%(Mod-1LL))%=(Mod-1LL);
22         c[i][j]=sum;
23     }
24 }
25 void mul(ll now){
26     while(now){
27         if(now&1)work(a,f,f,3,3);
28         work(a,a,a,3,3);
29         now>>=1;
30     }
31 }
32 ll pow(ll x,ll k){
33     if(k==0)return 1LL;
34     if(k==1)return x;
35     ll t=pow(x,k/2LL);t*=t;t%=Mod;
36     if(k&1)t*=x,t%=Mod;
37     return t;
38 }
39 int main(){
40     cin>>n>>f1>>f2>>f3>>c0;
41     memset(f,0,sizeof(f));
42     rep(i,1,3)f[i][i]=1LL;
43     a[1][1]=1LL;a[1][2]=1LL;a[1][3]=1LL;
44     a[2][1]=1LL;a[2][2]=0;a[2][3]=0;
45     a[3][1]=0;a[3][2]=1LL;a[3][3]=0;
46     mul(n-4LL);
47     ans[1][1]=ans[1][2]=ans[1][3]=1LL;
48     memset(anss,0,sizeof(anss));
49     work(ans,f,anss,1,3);
50     rep(i,1,3)(f3*=c0)%=Mod;
51     rep(i,1,2)(f2*=c0)%=Mod;
52     rep(i,1,1)(f1*=c0)%=Mod;
53     ll now=1LL;(now*=pow(f3,anss[1][1]))%=Mod;
54     (now*=pow(f2,anss[1][2]))%=Mod;
55     (now*=pow(f1,anss[1][3]))%=Mod;
56     ll nows=pow(c0,n);nows=pow(nows,Mod-2LL);
57     (now*=nows)%=Mod;
58     printf("%lld\n",now);
59     //system("pause");
60     return 0;
61 }
View Code

 

转载于:https://www.cnblogs.com/maximumhanyu/p/11428440.html

python023基于Python旅游景点推荐系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
JSP基于SSM网上医院预约挂号系统毕业源码案例设计 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、付费专栏及课程。

余额充值