hdoj4990Reading comprehension【矩阵快速幂】
2015-11-11 21:01
435 查看
Reading comprehensionTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1128 Accepted Submission(s): 444 Problem Description Read the program below carefully then answer the question. #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include<iostream> #include <cstring> #include <cmath> #include <algorithm> #include<vector> const int MAX=100000*2; const int INF=1e9; int main() { int n,m,ans,i; while(scanf("%d%d",&n,&m)!=EOF) { ans=0; for(i=1;i<=n;i++) { if(i&1)ans=(ans*2+1)%m; else ans=ans*2%m; } printf("%d\n",ans); } return 0; } Input Multi test cases,each line will contain two integers n and m. Process to end of file. [Technical Specification] 1<=n, m <= 1000000000 Output For each case,output an integer,represents the output of above program. Sample Input 1 10 3 100 Sample Output 1 5 Source BestCoder Round #8 |
=f[n-1]+2*f[n-2]+1;
初始矩阵 1 1 0
2 0 0
1 0 1
#include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #include<cmath> using namespace std; long long a[3][3]; long long ans[3][3]; long long N,M; void Mulit(long long A[3][3],long long B[3][3]){ long long D[3][3]={0}; for(int i=0;i<3;++i){ for(int k=0;k<3;++k){ if(A[i][k]){ for(int j=0;j<3;++j){ D[i][j]=(D[i][j]+A[i][k]*B[k][j])%M; } } } } for(int i=0;i<3;++i){ for(int j=0;j<3;++j){ A[i][j]=D[i][j]; } } } void Martix(long long A[3][3]){ for(int i=0;i<3;++i){ for(int j=0;j<3;++j){ ans[i][j]=(i==j); } } while(N){ if(N&1)Mulit(ans,A); Mulit(A,A); N>>=1; } } int main() { int num[3]={1,1,2},i,j; while(scanf("%lld%lld",&N,&M)!=EOF){ if(N<=2){ printf("%d\n",num %M); continue; } a[0][0]=1;a[0][1]=1;a[0][2]=0; a[1][0]=2;a[1][1]=0;a[1][2]=0; a[2][0]=1;a[2][1]=0;a[2][2]=1; N-=2; Martix(a); printf("%lld\n",(2*ans[0][0]+ans[1][0]+ans[2][0])%M); } return 0; }
相关文章推荐
- Comp 逐字节地比较两个文件或几组文件的内容
- Inheritance vs. Composition in Java
- no acceptable C compiler found in $PATH
- Comparable & Comparator
- "no acceptable C compiler found in $PATH"解决手记
- linux下压缩与解压缩以及打包命令详解
- 看我如何用comp实现文件冲突检测
- "Java:comp/env/"讲解与JNDI
- zabbix 添加对网卡流量超出阈值的监控
- 快速排序
- CEF3自研究笔记 四、CEF3关于多字节字符集和UNICODE字符集
- 朋友介绍的一个购物网站,非常好!!!
- RE正则的常规用法
- List<map<String,Object>>
- hdu Flood-it!(IDA*算法)
- js中innerText,innerHTML的用法
- 1.0.0 JAVAC 不是内部或外部命令解决方法
- mybatis分页插件
- 《用Python做科学计算》笔记
- 并查集模板