HDU 1757 A Simple Math Problem (矩阵+快速幂)
2015-02-22 18:05
344 查看
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1757
题意:已知当n<10时,f(n)=n,当n≥10时f(n)=a0*f(n-1)+a2*f(n-2)+....+a9*f(n-10),告诉你a0~a9,和n,mod,求f(n)%mod
分析:矩阵快速幂.....和nyoj 301题递推求值差不多,构造矩阵即可。/article/2710017.html
代码:
题意:已知当n<10时,f(n)=n,当n≥10时f(n)=a0*f(n-1)+a2*f(n-2)+....+a9*f(n-10),告诉你a0~a9,和n,mod,求f(n)%mod
分析:矩阵快速幂.....和nyoj 301题递推求值差不多,构造矩阵即可。/article/2710017.html
代码:
#include <iostream> #include <cstdio> using namespace std; typedef long long LL; int N,MOD; struct Matrax { LL mat[10][10]; }U,F; Matrax multi(Matrax a,Matrax b) { Matrax ans; int i,j,k; for(i=0;i<10;i++) for(j=0;j<10;j++) { ans.mat[i][j]=0; for(k=0;k<10;k++) ans.mat[i][j]+=(a.mat[i][k]*b.mat[k][j]); ans.mat[i][j]%=MOD; } return ans; } Matrax matrax_pow(int n) { Matrax ans=U,p=F; while(n) { if(n&1) ans=multi(ans,p); n>>=1; p=multi(p,p); } return ans; } void Init() { for(int i=0;i<10;i++) for(int j=0;j<10;j++) if(i==j) U.mat[i][j]=1LL; else U.mat[i][j]=0LL; for(int i=1;i<10;i++) F.mat[i-1][i]=1LL; } int main() { Init(); int i,j; LL x; while(scanf("%d%d",&N,&MOD)!=EOF) { for(i=0;i<10;i++) { scanf("%lld",&F.mat[i][0]); F.mat[i][0]%=MOD; } if(N<10) { printf("%d\n",N%MOD); continue; } N-=9; LL ans=0; Matrax temp=matrax_pow(N); for(i=9;i>=0;i--) ans+=(i*temp.mat[9-i][0])%MOD; printf("%lld\n",LL(ans%MOD)); } return 0; }
相关文章推荐
- 【HDU】1757 - A Simple Math Problem(矩阵构造方法 & 快速幂)
- HDU 1757 A Simple Math Problem(构造矩阵)
- hdu 1757 A Simple Math Problem(矩阵快速幂)
- HDU 1757 A Simple Math Problem 矩阵快速幂
- 【矩阵乘法】hdu hdoj 1757 A Simple Math Problem
- hdu 1757 A Simple Math Problem(矩阵快速幂)
- hdu 1757 A Simple Math Problem (矩阵快速幂)
- hdu 1757 A Simple Math Problem_矩阵快速幂
- HDU 1757 A Simple Math Problem 矩阵快速幂
- hdu 1757 A Simple Math Problem 矩阵乘法解线性方程
- HDU 1757 A Simple Math Problem 矩阵快速幂
- hdu - 1757 - A Simple Math Problem(矩阵快速幂)
- hdu 1757 A Simple Math Problem (乘法矩阵)
- HDU 1757 A Simple Math Problem 矩阵快速幂
- HDU 1757 A Simple Math Problem (矩阵快速幂)
- hdu 1757 A Simple Math Problem(矩阵优化递推)
- hdu 1757 A Simple Math Problem 矩阵基础题
- HDU - 1757 A Simple Math Problem (构造矩阵)
- hdu 1757 A Simple Math Problem 矩阵
- HDU 1757 A Simple Math Problem 矩阵快速幂