hdu 4291 (循环节+矩阵快速幂,2012成都网络选拔赛1004)
来源:互联网 发布:java swing 开源项目 编辑:程序博客网 时间:2024/05/18 01:32
点击打开链接
最近刚学矩阵快速幂,下午做网选,马上就遇到了,竟然可以根据循环节找循环节!!!!还是做这类题目少啊!!
由1000000007求出222222224
由222222224求出183120
#include"stdio.h"#include"string.h"#define N 150001#define m1 1000000007#define m2 222222224#define m3 183120typedef __int64 LL;struct node{LL a[3][3];}A;//找循环节void fun(){LL i,t,m;LL g0,g1;g0=0;g1=1;m=m1;/*由m1求m2由m2求m3*/for(i=2;;i++){t=(3*g1%m+g0%m)%m;g0=g1;g1=t;if(g0==0&&g1==1){printf("%d\n",i-1);break;}}}//A*B%mnode mult(node A,node B,LL m){int i,j,k;node C;memset(C.a,0,sizeof(C.a));for(i=1;i<=2;i++){for(j=1;j<=2;j++){for(k=1;k<=2;k++){C.a[i][j]+=A.a[i][k]*B.a[k][j];C.a[i][j]%=m;}}}return C;}//A^k%mLL pow(node A,LL k,LL m){node B;B.a[1][1]=B.a[2][2]=1;B.a[1][2]=B.a[2][1]=0;while(k){if(k%2)B=mult(A,B,m);A=mult(A,A,m);k/=2;}return B.a[1][2]%m;}int main(){//fun();LL n;while(scanf("%I64d",&n)!=-1){if(n<2)printf("%d\n",n);else{A.a[1][1]=3;A.a[1][2]=A.a[2][1]=1;A.a[2][2]=0;LL ans;ans=pow(A,pow(A,pow(A,n,m3),m2),m1);printf("%I64d\n",ans);}}return 0;}
- hdu 4291 (循环节+矩阵快速幂,2012成都网络选拔赛1004)
- HDU 4291 A Short problem (2012成都网络赛,矩阵快速幂+循环节)
- hdu4291 A Short problem 矩阵快速幂 求循环节----成都网络赛
- HDU 4291:A Short problem_成都赛区网络赛—矩阵快速幂
- hdu 4291 矩阵快速幂+循环节
- HDU 4291 (矩阵快速幂+循环节)
- hdu 4291(矩阵快速幂 + 循环节)
- hdu 4291(矩阵快速幂+循环节)
- hdu 4291 矩阵的快速幂(寻找循环节)
- hdu 5690 矩阵快速幂/循环节
- 【矩阵快速幂 && 循环节】HDU
- HDU 4291 A Short problem(矩阵快速幂+循环节)
- HDU 4291 A Short problem // 矩阵快速幂, 循环节
- hdu 4291 矩阵快速幂+找循环节
- HDU 4291-A Short problem-循环节+矩阵快速幂
- HDU 4291 A Short problem(矩阵快速幂+循环节)
- HDU——4291A Short problem(矩阵快速幂+循环节)
- HDU 4291 A Short problem(矩阵快速幂取模求循环节)
- UVA 10474 Where is the Marble?
- ubuntu的软件中心无法打开,竟然是我的默认Python解释器的变化引起的
- POJ1160 Post Office
- x264中比特流的存储结构
- 从决策树学习谈到贝叶斯分类算法、EM、HMM
- hdu 4291 (循环节+矩阵快速幂,2012成都网络选拔赛1004)
- C语言程序的内存布局
- 暑假的开始2周
- Google Mock Cookbook译文
- MyEclipse 经验
- 找到眼睛
- 黑马程序员——交通灯管理系统
- jsp中redirect和forward的区别
- android学习——android项目的的目录结构