[矩阵快速幂] fzu 2117 特殊的数
来源:互联网 发布:花衣吹笛手 知乎 编辑:程序博客网 时间:2024/06/03 18:48
题意:
中文题不解释
注意是n位数!
思路:
中文在群里问了大神们,终于领悟到这种递推的精华
对于给定的n都会包含有四种状态
0、7和9的个数都是奇数
1、7是奇数,9是偶数
2、7是偶数,9是奇数
3、7是偶数,9是偶数
显然状态3是我们要状态,但是他们之间是可以互相转移的
所以对于每次添加一个空位放数字,建立转移矩阵
| 3 1 1 0 |
| 1 3 0 1 |
| 1 0 3 1 |
| 0 1 1 3 |
初始状态为 (0,0,0,1)
然后就是n次方了~利用矩阵快速幂
最后ans.mat[0][3]就是答案了
代码:
#include"cstdlib"#include"cstdio"#include"cstring"#include"cmath"#include"queue"#include"algorithm"#include"iostream"using namespace std;__int64 mod=1000000007;struct matrix{ __int64 mat[5][5];};matrix matmul(matrix a,matrix b,int n,int m){ int i,j,k; matrix c; memset(c.mat,0,sizeof(c.mat)); for(i=0;i<n;i++) { for(j=0;j<n;j++) { for(k=0;k<n;k++) { c.mat[i][j]+=a.mat[i][k]*b.mat[k][j]; c.mat[i][j]%=m; } } } return c;}matrix matpow(matrix a,__int64 k,int n,int m){ matrix b; int i; memset(b.mat,0,sizeof(b.mat)); for(i=0;i<n;i++) b.mat[i][i]=1; while(k) { if(k&1) b=matmul(a,b,n,m); a=matmul(a,a,n,m); k>>=1; } return b;}int main(){ int t; cin>>t; while(t--) { matrix a,b,ans; memset(a.mat,0,sizeof(a.mat)); memset(b.mat,0,sizeof(b.mat)); a.mat[0][3]=1; for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { if(i==j) b.mat[i][j]=3; else if(i+j==3) b.mat[i][j]=0; else b.mat[i][j]=1; } } __int64 k; scanf("%I64d",&k); ans=matmul(a,matpow(b,k,4,mod),4,mod); __int64 sum=0; printf("%I64d\n",ans.mat[0][3]); } return 0;}
0 0
- [矩阵快速幂] fzu 2117 特殊的数
- [fzu]P2177 特殊的数 矩乘快速幂
- [fzu]P2177 特殊的数 (imp)手推公式+快速幂
- fzu 1683(矩阵快速幂)
- fzu 1692(矩阵快速幂)
- FZU 1911 矩阵快速幂
- FZU 1911【矩阵快速幂】
- FZU 1683纪念SlingShot (简单的矩阵快速幂)
- TOJ 3848 FZU 1683 矩阵快速幂
- fzu 2173 floyd+矩阵快速幂
- FZU 1683 纪念SlingShot(矩阵快速幂)
- FZu 1683 纪念SlingShot 矩阵快速幂
- FZU 2040 Tiling (矩阵快速幂)
- FZU - 1683 纪念SlingShot 矩阵快速幂
- FZU - 1692 Key problem 矩阵快速幂
- FZU 2198 快来快来数一数(矩阵快速幂)
- Fzu 2198 快来快来数一数【矩阵快速幂】
- 矩阵快速幂(特殊矩阵+优化)upc2604
- 面试题总结
- [转]浅析人脸检测之Haar分类器方法
- 递归方法实现多种进制的转换
- 【PCB设计】第22天,毕业设计PCB部分画完:ARM-A9+CYCLONE5+双32位deltasigmaADC
- 九大排序算法总结
- [矩阵快速幂] fzu 2117 特殊的数
- 详细讲解Android图片下载框架UniversialImageLoader之内存缓存扩展(四)
- HDU—— 2500 做一个正气的杭电人
- Spring下载地址
- js变量的作用域
- 【Cocos2d-x】C++自定义线程安全消息管理
- 搭个简单Jersey+spring工程
- htmlunit网络爬虫相关
- nodeJs基础