hdu 1757 A Simple Math Problem 矩阵快速幂
来源:互联网 发布:北京11选5遗漏数据查询 编辑:程序博客网 时间:2024/05/28 11:50
推出矩阵公式即可:(盗图)
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1757
#include <stdio.h>#include <string.h>#include <stdlib.h>int len_Matrix;int Mod;struct Matrix{ int M[15][15];};int tempa[15];int a[15];void Init_Matrix(Matrix * tmp){ for(int i=0;i<len_Matrix;i++){ for(int j=0;j<len_Matrix;j++){ tmp -> M[i][j] = 0; } } tmp -> M[1][0] = 1; for(int i=1;i<len_Matrix;i++){ for(int j=1;j<len_Matrix;j++){ if(tmp -> M[i-1][j-1]){ tmp -> M[i][j] = 1; } } } for(int i=0;i<len_Matrix;i++){ tmp -> M[0][i] = tempa[i]; }}Matrix multiply(Matrix a1,Matrix a2){ Matrix ans; for(int i=0;i<len_Matrix;i++){ for(int j=0;j<len_Matrix;j++){ ans.M[i][j] = 0; for(int k=0;k<len_Matrix;k++){ ans.M[i][j] = (a1.M[i][k]*a2.M[k][j]+ans.M[i][j])%Mod; } } } return ans;}Matrix Pow(Matrix tmp,int nl){ Matrix ans ; for(int i=0;i<len_Matrix;i++){ for(int j=0;j<len_Matrix;j++){ if(i==j)ans.M[i][j] = 1; else ans.M[i][j] = 0; } } while(nl){ if(nl&1){ ans = multiply(ans,tmp); } tmp = multiply(tmp,tmp); nl /= 2; } return ans;}void Solve(int k,Matrix tmp){ if(k<10) printf("%d\n",a[k]%Mod); else{ Matrix ans = Pow(tmp,k-9); //Debug_Matrix(ans); int zans =0; for(int i=0;i<len_Matrix;i++){ zans = (zans + ans.M[0][i] * a[9-i]) % Mod; } printf("%d\n",zans); }}void Input(){ int k,m; while(~scanf("%d %d",&k,&m)){ for(int i=0;i<10;i++){ scanf("%d",tempa+i); } len_Matrix = 10; Mod = m; Matrix tmp; Init_Matrix(&tmp); for(int i=0;i<10;i++){ a[i] = i; } Solve(k,tmp); }}void File(){ freopen("a.in","r",stdin); freopen("a.out","w",stdin);}int main(void){ //File(); Input(); return 0;}
0 0
- HDU - problem 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 矩阵快速幂
- HDU 1757 A Simple Math Problem (矩阵+快速幂)
- HDU 1757-A Simple Math Problem(矩阵快速幂)
- Leetcode Partition List 分割链表
- 蓝桥杯--- 历届试题 邮局 (深搜+暴力)(动态待解决)
- Leetcode[3] Longest Substring Without Repeating Characters
- 九度1014排名(结构体)
- 算法设计读书笔记第二章
- hdu 1757 A Simple Math Problem 矩阵快速幂
- Egret Wing实战教程
- 初步使用HTMLParser工具包【部分代码来自网络】
- RMAN duplicate数据库
- 苹果公司的专利战其实是营销战略?
- Ubuntu14.04安装Maven3.2.5
- Spring MVC防止数据重复提交
- 并查集的详解(转)
- VS2010 cocos2d BOX2D环境搭建