hdu 2971 Tower(*矩阵乘法)
来源:互联网 发布:htc m8数据连接已断开 编辑:程序博客网 时间:2024/06/05 12:06
超时的代码:
#include<iostream>#include<cstdio>#include<memory.h>using namespace std;struct node{__int64 matrix[5][5];}ma,e;__int64 m,n;node operator *(node x,node y){node temp;for(int i=1;i<=4;i++)for(int j=1;j<=4;j++){temp.matrix[i][j]=0;for(int k=1;k<=4;k++)temp.matrix[i][j]+=(x.matrix[i][k]*y.matrix[k][j])%m;temp.matrix[i][j]%=m;}return temp;}node operator ^(node x,__int64 k){if(k==0)return e;node ans=e,p=x;while(k){if(k&1){ans=ans*p;}k=k/2;p=p*p;}return ans;}int main(){__int64 t,a2;scanf("%I64d",&t);while(t--){scanf("%I64d %I64d %I64d",&a2,&n,&m);//不是%dmemset(ma.matrix,0,sizeof(ma.matrix));memset(e.matrix,0,sizeof(e.matrix));for(int i=1;i<=4;i++)for(int j=1;j<=4;j++){if(i==j)e.matrix[i][j]=1;}if(a2==1){printf("%I64d\n",n%m);continue;}a2=a2%m;ma.matrix[1][1]=(4*a2*a2)%m;ma.matrix[1][2]=(2-8*a2*a2)%m;ma.matrix[1][3]=(4*a2*a2)%m;ma.matrix[1][4]=-1;ma.matrix[2][1]=ma.matrix[3][2]=ma.matrix[4][3]=1; __int64 ans=1;__int64 a3=(2*a2*a2-1)%m;__int64 a4=(2*a2*a3-a2)%m;__int64 s1=1,s2=s1+a2*a2,s3=s2+a3*a3,s4=s3+a4*a4;if(n==2)printf("%I64d\n",s2%m);else if(n==3)printf("%I64d\n",s3%m);else if(n==4)printf("%I64d\n",s4%m);else{node temp=ma^(n-4);//__int64 ans=(temp.matrix[1][1]*s1+temp.matrix[1][2]*s2+temp.matrix[1][3]*s3+temp.matrix[1][4]*s4); __int64 ans=0;ans=(temp.matrix[1][1]*s1)%m;if(ans<0)ans=(ans+m)%m;ans+=temp.matrix[1][2]*s2;if(ans<0)ans=(ans+m)%m;ans+=temp.matrix[1][3]*s3;if(ans<0)ans=(ans+m)%m;ans+=temp.matrix[1][4]*s4;if(ans<0)ans=(ans+m)%m;printf("%I64d\n",ans);}}//system("pause");return 0;}
- hdu 2971 Tower(*矩阵乘法)
- [矩阵乘法 + 矩阵构造] HDU 2971 Tower
- hdu 2971 Tower 矩阵
- HDU 2971 Tower 构造矩阵
- hdu 2971 Tower(矩阵快速幂)
- hdu 2971 Tower(矩阵快速幂)
- HDU 2971 Tower (矩阵快速幂)
- HDU 2971(数论,构造矩阵+矩阵乘法优化)
- hdu 4965(矩阵乘法 )
- hdu 1575 Tr A(矩阵乘法)
- hdu 2065(递推+矩阵乘法)
- HDU 4920 Matrix multiplication(矩阵乘法)
- hdu 4920 Matrix multiplication(矩阵乘法)
- Hdu 5015 233 Matrix (矩阵乘法)
- hdu 1575 Tr A(矩阵乘法)
- HDU 1575 Tr A (矩阵乘法)
- HDU 1575 Tr A (矩阵乘法)
- hdu 4990 Reading comprehension(矩阵乘法)
- 嫣然一笑苦了情
- strlen与sizeof区别
- 11级_Java_曹建波 09.20 泛型
- hdu_2732
- MES中POP
- hdu 2971 Tower(*矩阵乘法)
- 网络编程
- 你准备好了吗?IT民工转型升级的职业规划
- [C++语法] 关键字typedef用法(转)
- 秋雨寄相思
- hdu_3549
- git常用命令速查表
- POJ 数论题集
- Bootargs for enabling display omap