HDU 1757 矩阵快速幂加速递推
来源:互联网 发布:数据采集器 编辑:程序博客网 时间:2024/05/21 06:19
题意:
已知:
当x<10时:f(x)=x
否则:f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + ……+ a9 * f(x-10);
求:f(x)%m的值。
思路:
矩阵快速幂加速递推。 嗯嗯
// by SiriusRen#include <cstdio>#include <cstring>using namespace std;int cases,k,ans,a[10][10],mod;struct matrix{int a[10][10];void init(){memset(a,0,sizeof(a));}}first,cpy,td;matrix mul(matrix &a,matrix &b,int x){ matrix temp;temp.init(); for(int i=0;i<10;i++) for(int j=0;j<x;j++) for(int k=0;k<10;k++) temp.a[i][j]=(a.a[i][k]*b.a[k][j]+temp.a[i][j])%mod; return temp;}int main(){ while(~scanf("%d%d",&k,&mod)){ cpy.init();first.init(); ans=0; for(int i=0;i<10;i++)scanf("%d",&first.a[9][9-i]),cpy.a[9][9-i]=first.a[9][9-i]; for(int i=0;i<9;i++)first.a[i][i+1]=cpy.a[i][i+1]=1; for(int i=0;i<10;i++)td.a[i][0]=i; if(k<10)printf("%d\n",k%mod); else{k-=10; while(k){ if(k&1)first=mul(cpy,first,10); cpy=mul(cpy,cpy,10);k>>=1; } first=mul(first,td,1); printf("%d\n",first.a[9][0]); } }}
0 0
- HDU 1757 矩阵快速幂加速递推
- poj3070(利用矩阵快速幂加速递推式)
- hdu 5950 矩阵加速递推
- 菲波那切数列 :矩阵加速递推 矩阵快速幂
- HDU 3117 Fibonacci Numbers(Fibonacci矩阵加速递推+公式)
- HDU 4686 Arc of Dream(矩阵加速递推)
- 矩阵加速递推 入门指南
- BZOJ2326: [HNOI2011]数学作业【矩阵加速递推】
- 爆零赛T2(矩阵加速递推式)
- 【递推&矩阵快速幂】hdu 2604
- hdu 3411 推公式+矩阵快速幂
- hdu 2842(矩阵快速幂+递推)
- HDU 4686 (推公式+矩阵快速幂)
- hdu 3519 递推+矩阵快速幂
- HDU 2604 递推 + 矩阵快速幂
- HDU 6198 推公式+矩阵快速幂
- 矩阵经典题目七:Warcraft III 守望者的烦恼(矩阵加速递推)
- 矩阵加速递推(XDU 斐波那契数列为列)
- 背包问题
- android studio 中的NDK开发(1)
- 排序算法-java实现
- iOS多线程——初步使用GCD中的Context
- java中如何正确的删除集合中的元素
- HDU 1757 矩阵快速幂加速递推
- 杭电OJ2106-decimal system
- 暑期总结-Tarjan算法
- 数据库基本概念
- 转行做程序员之前你应该考虑的三件事
- JAVA实践伪·漫水填充法
- 往开发板写led驱动时出现错误:insmod: can't insert 's3c_led.ko': unknown symbol in module or invalid parameter
- Java学习二:一些零碎的东西
- php cli模式下获取参数的方法