HDU 5015 233 Matrix (矩阵快速幂)
来源:互联网 发布:淘宝店铺起名软件 编辑:程序博客网 时间:2024/05/24 04:42
题目链接:HDU 5015 233 Matrix
题意:已知矩阵的第一行(可以递推出来)和第一列,其他ai,j = ai-1,j +ai,j-1,求an,m
思路:写出先几个ai,j 根据矩阵乘法,得到构造矩阵
其中b1=233;
AC代码:
#include<stdio.h>#include<string.h>#define ll __int64const ll kmod=10000007;struct Matrix{ll m[15][15];};struct Matrix I,aa;ll n;void init(){ll i,j;memset(I.m,0,sizeof I.m);for(i=0;i<=14;i++)I.m[i][i]=1;memset(aa.m,0,sizeof aa.m);for(i=1;i<=14;i++){for(j=i;j<=14;j++)aa.m[i][j]=1;}aa.m[0][0]=1;aa.m[0][1]=3;aa.m[1][1]=10;}Matrix mul(Matrix a,Matrix b){ll i,j,k;Matrix c;for(i=0;i<n+2;i++){for(j=0;j<n+2;j++){c.m[i][j]=0;for(k=0;k<n+2;k++){c.m[i][j]+=(a.m[i][k]*b.m[k][j])%kmod;c.m[i][j]%=kmod;}}}return c;}Matrix quickpow(Matrix a,ll p){Matrix b,m;b=I,m=a;while(p){if(p%2) b=mul(b,m);p/=2;m=mul(m,m);}return b;}int main(){ll m;ll i,j,k;init();Matrix a,c;while(scanf("%I64d %I64d",&n,&m)!=EOF){a.m[0][0]=1,a.m[0][1]=233;for(i=2;i<n+2;i++)scanf("%I64d",&a.m[0][i]);Matrix ans;if(m==0){printf("%I64d\n",a.m[0][n+1]%kmod);continue;}ans=quickpow(aa,m);for(i=0;i<n+2;i++){c.m[0][i]=0;for(k=0;k<n+2;k++){c.m[0][i]+=(a.m[0][k]*ans.m[k][i])%kmod;c.m[0][i]%=kmod;}}printf("%I64d\n",c.m[0][n+1]%kmod);}return 0;}
0 0
- HDU 5015 - 233 Matrix (矩阵构造 矩阵快速幂)
- 【HDU】5015 233 Matrix 矩阵快速幂
- hdu 5015 233 Matrix 矩阵快速幂
- hdu 5015 233 Matrix(矩阵快速幂)
- hdu 5015 Matrix 233 矩阵快速幂
- hdu 5015 233 Matrix(矩阵快速幂)
- HDU 5015 233 Matrix 矩阵快速幂
- [矩阵快速幂] hdu 5015 233 Matrix
- hdu 5015 233 Matrix 矩阵快速幂
- Hdu 5015 233 Matrix 矩阵快速幂
- HDU 5015 233 Matrix --矩阵快速幂
- hdu 5015 233 Matrix (矩阵快速幂)
- HDU 5015-233 Matrix-矩阵快速幂
- HDU 5015 233 Matrix 【矩阵快速幂】
- 233 Matrix hdu 5015(矩阵快速幂)
- HDU 5015 233 Matrix --矩阵快速幂
- hdu 5015-233 Matrix(矩阵快速幂)
- HDU 5015 233 Matrix (矩阵快速幂)
- Linux du命令
- Java中构造方法的定义限制特点
- nysql使用09
- 请分别输入年月日三个数值,计算出这是这一年的第几天?(提示:要考虑闰年和2月的情况)
- Activity之间参数传递的方式
- HDU 5015 233 Matrix (矩阵快速幂)
- Linux 链接脚本详解
- android 文件浏览器实现
- mysql使用10
- 用c程序验证/目录下面..和.是相同的
- hdu 5015 233 Matrix(矩阵快速幂)
- mysql使用11
- Web Service单元测试工具实例介绍之SoapUI
- linux软中断与硬中断实现原理概述。