voj 1067 经典矩阵7 递推+矩阵快速幂
来源:互联网 发布:磁选机选矿的数据分析 编辑:程序博客网 时间:2024/06/05 22:36
题目:https://vijos.org/p/1067
感觉网上其他题解有点奇怪
这个图写错了,矩阵写到前面去。
#include<bits/stdc++.h>using namespace std;typedef long long int ll;const ll mod = 7777777;const int maxn=11;struct matrix{ ll arr[maxn][maxn]; matrix operator*(matrix b){ matrix ans; ll tmp; for(int i=0; i<maxn; i++) for(int j=0; j<maxn; j++){ ans.arr[i][j] = 0; for(int k=0; k<maxn; k++){ tmp = (arr[i][k]*b.arr[k][j])%mod; ans.arr[i][j] = (ans.arr[i][j] + tmp)%mod; } } return ans; }};matrix quick_pow(matrix a,ll N){ matrix ans; memset(ans.arr,0,sizeof(ans.arr)); for(int i=0; i<maxn; i++) ans.arr[i][i] = 1; while(N){ if(N&1) ans = ans*a; a = a*a; N /= 2;; } return ans;}int main(){ ll k,n,tmp[11]; matrix a; scanf("%lld%lld",&k,&n); memset(a.arr,0,sizeof(a.arr)); for(int i=0;i<k;i++){ if(i!=k-1) a.arr[i][i+1]=1; else for(int j=0;j<k;j++) a.arr[i][j]=1; } for(int i=0;i<k;i++) tmp[i]=pow(2,i); a=quick_pow(a,n-k); ll ans=0; for(int i=0;i<k;i++){ //cout<<tmp[i]<<" "; ans+=a.arr[k-1][i]*tmp[i]; ans%=mod; } printf("%lld\n",ans); /*for(int i=0;i<k;i++){ for(int j=0;j<k;j++){ printf("%lld ",a.arr[i][j]); } cout<<endl; }*/ return 0;}
阅读全文
0 0
- voj 1067 经典矩阵7 递推+矩阵快速幂
- voj 1067 守望者的烦恼 矩阵快速幂
- voj 1049 送给圣诞夜的礼品 矩阵快速幂
- 垒骰子(经典递推、矩阵快速幂)
- 递推+矩阵快速幂
- 矩阵快速幂+递推
- VOJ 1049 经典题目4 矩阵置换
- VOJ 1067 Warcraft III 守望者的烦恼 (矩阵快速幂+dp)
- 【递推&矩阵快速幂】hdu 2604
- hdu2604(递推,矩阵快速幂)
- hdu2971 递推+矩阵快速幂
- HDU2604-Queuing(递推+矩阵快速幂)
- 【递推+矩阵快速幂】【HDU2604】【Queuing】
- hdu 2842(矩阵快速幂+递推)
- HDU3411Snail Alice(递推+矩阵快速幂)
- nyoj301递推求值【矩阵快速幂】
- hdu2604 递推转换矩阵快速幂
- hdu 3519 递推+矩阵快速幂
- 在浏览器地址栏输入百度网址之后的故事(面试必考)
- 异常处理
- kylin java查询
- 编译原理与编译构造 Intermadiate Code Generation
- linux下运行文件为什么要加./
- voj 1067 经典矩阵7 递推+矩阵快速幂
- 本人菜鸟,求助,为何不能输出
- 机器学习:决策树--python
- 软件工程(C编码实践篇)主观题总结
- 循环输出
- kuangbin并查集分析
- hdu2759 Billbord(线段树)
- 小函数工具库
- K-Dominant Character CodeForces