HDU 1757 A Simple Math Problem(矩阵快速幂)
2014-04-19 01:05
441 查看
题目链接
题意 :给你m和k, 让你求f(k)%m。如果k<10,f(k) = k,否则 f(k) = a0 * f(k-1) + a1 * f(k-2) + a2 * f(k-3) + …… + a9 * f(k-10);
思路 :先具体介绍一下矩阵快速幂吧,刚好刚刚整理了网上的资料。可以先了解一下这个是干嘛的,怎么用。
这个怎么弄出来的我就不说了,直接看链接吧,这实在不是我强项,点这儿,这儿也行
View Code
题意 :给你m和k, 让你求f(k)%m。如果k<10,f(k) = k,否则 f(k) = a0 * f(k-1) + a1 * f(k-2) + a2 * f(k-3) + …… + a9 * f(k-10);
思路 :先具体介绍一下矩阵快速幂吧,刚好刚刚整理了网上的资料。可以先了解一下这个是干嘛的,怎么用。
这个怎么弄出来的我就不说了,直接看链接吧,这实在不是我强项,点这儿,这儿也行
//HDU 1757 #include <iostream> #include <stdio.h> using namespace std; struct matrix { int m[10][10] ; } b,tp,res,init ; int n,m ; matrix Mul(matrix a,matrix b) { matrix c ; for(int i = 0 ; i < 10 ; i++) { for(int j = 0 ; j < 10 ; j++) { c.m[i][j] = 0 ; for(int k = 0 ; k < 10 ; k++) { c.m[i][j] += (a.m[i][k] * b.m[k][j]) % m ; c.m[i][j] %= m ; } } } return c ; } matrix matrix_mi(matrix p,int k) { matrix t = res; for(int i = 0 ; i <= 10 ; i++) t.m[i][i] = 1 ; while(k) { if(k & 1) t = Mul(t,p) ; k >>= 1 ; p = Mul(p,p) ; } return t ; } void Init() { for(int i = 0 ; i < 10 ; i++) for(int j = 0 ; j < 10 ; j++) if(i-1 == j) init.m[i][j]=1; else init.m[i][j]=0; } int main() { Init() ; while(~scanf("%d %d",&n,&m)) { b = init ; for(int i = 0 ; i < 10 ; i++) scanf("%d",&b.m[0][i]) ; for(int i = 0 ; i < 10 ; i++) for(int j = 0 ; j < 10 ; j++) if(i==j) res.m[i][j] = 1 ; else res.m[i][j] = 0 ; if(n >= 10) { int sum = 0 ; tp = matrix_mi(b,n-9) ; for(int i = 0 ; i < 10 ; i++) sum += (tp.m[0][i] * (9-i))%m ; printf("%d\n",sum%m) ; } else printf("%d\n",n%m) ; } return 0; }
View Code
相关文章推荐
- 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(矩阵快速幂)
- HDU1757 - 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 A Simple Math Problem 1757 矩阵的构造和快速幂
- HDU 1757 A Simple Math Problem(矩阵快速幂构造)
- HDU 1757 A Simple Math Problem 矩阵快速幂