杭电_hdu1757_矩阵解线性方程_快速幂乘
来源:互联网 发布:芒果tv网络连接失败 编辑:程序博客网 时间:2024/05/03 19:33
/*
f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10)
构造的矩阵是:
|0 1 0 ..... 0| |f0| |f1 |
|0 0 1 0 . 0| |f1| |f2 |
|................1| * |..| = |...|
|a9 a8 .......a0| |f9| |f10|
*/
#include<iostream>
#include<cstdio>
#include<cmath>
struct mat
{
int m[10][10];
};
int n,k;
mat product(mat a,mat b) //矩阵相乘
{
mat c;
memset(c.m,0,sizeof(c.m));
int i,j,l;
for(i=0;i<10;i++)
for(j=0;j<10;j++)
{
for(l=0;l<10;l++)
c.m[i][j]+=a.m[i][l]*b.m[l][j]%k;
c.m[i][j]%=k;
}
return c;
}
mat div(mat a,int x) //快速幂乘
{
if(x==1)
return a;
else if(x&1)
return product(div(a,x-1),a);
else
{
mat temp=div(a,x>>1);
return product(temp,temp);
}
}
int main()
{
mat a;
while(scanf("%d%d",&n,&k)!=EOF)
{
if(n<10)
{
printf("%d",n%k);
continue;
}
int i,j;
for(i=9;i>=0;i--)
scanf("%d",&a.m[9][i]);
for(i=0;i<9;i++)
for(j=0;j<10;j++)
if(i==j-1)
a.m[i][j]=1;
else
a.m[i][j]=0;
mat b=div(a,n-9);
int ans=0;
for(i=0;i<10;i++)
ans+=b.m[9][i]*i%k;
printf("%d/n",ans%k);
}
return 0;
}
- 杭电_hdu1757_矩阵解线性方程_快速幂乘
- hdu_2276_构造矩阵_快速幂乘
- 快速矩阵幂乘算法
- 快速乘/快速幂/矩阵快速幂
- 快速乘 快速幂 矩阵快速幂
- 矩阵快速幂(矩阵连乘)
- ZOJ 3690 矩阵快速幂乘
- 模版—矩阵连乘快速幂
- 二分幂,快速幂,矩阵快速幂,快速乘
- 【个人模板】 快速幂取模,矩阵快速幂,快速乘
- HDU2294 Pendant (齐次线性方程的矩阵解法 + 矩阵快速幂)
- hdu3306Another kind of Fibonacci(矩阵连乘&矩阵快速幂)
- 杭电1082-矩阵连乘的判定
- 2875: [Noi2012]随机数生成器 (矩阵乘法,快速幂,快速乘)
- BZOJ-2875 随机数生成器 矩阵乘法快速幂+快速乘
- BZOJ-2326 数学作业 矩阵乘法快速幂+快速乘
- 杭电1575-Tr A(矩阵快速幂)
- 杭电1575 Tr A(矩阵快速幂)
- 给CSDN提建议
- 研究称全球10年内将出现粮食短缺 粮价上涨20%
- AnkhSvn+VisualSvn Server
- ie8浏览器还原form中的控件值过程在载入结束后,在onload前
- 防止ClistCtrl刷新闪烁的五种方法
- 杭电_hdu1757_矩阵解线性方程_快速幂乘
- Oracle10g数据缓冲区(DB_CACHE_SIZE)
- 用Bitmap/BitmapData 实现人物行走
- df问题
- 用Illustrator制作荷花的矢量图
- Mysql的Replace和ON DUPLICATE KEY UPDATE的用法与作用
- 如何在其他电脑上运行VS2005编译的DEBUG版应用程序
- 引用 在Delphi 2007 中用Indy10开发Socket应用程序
- C# 方法默认访问级别 : private