矩阵乘法快速幂 cojs 1717. 数学序列
矩阵乘法模板:
#define N 801
#include<iostream>
using namespace std;
#include<cstdio>
int a[N][N],b[N][N],c[N][N];
int n,m,p;
int read()
{
int ans=,ff=;char s;
s=getchar();
while(s<''||s>'')
{
if(s=='-') ff=-;
s=getchar();
}
while(s>=''&&s<='')
{
ans=ans*+s-'';
s=getchar();
}
return ans*ff;
}
int main()
{
n=read();
p=read();
m=read();
for(int i=;i<=n;++i)
for(int j=;j<=p;++j)
a[i][j]=read();
for(int i=;i<=p;++i)
for(int j=;j<=m;++j)
b[i][j]=read();
for(int i=;i<=n;++i)
{
for(int j=;j<=m;++j)
{
c[i][j]=;
for(int k=;k<=p;++k)
c[i][j]+=a[i][k]*b[k][j];
printf("%d ",c[i][j]);
}
printf("\n");
}
return ;
}
cojs 1717. 数学序列
★ 输入文件:number1.in 输出文件:number1.out 简单对比
时间限制:1 s 内存限制:128 MB
【题目描述】
已知一个函数f :
f (1) =1
f (2) =1
f (n) = (a × f (n −1) +b × f (n − 2))mod 7
现给出a,b,n ,要你求出 f (n) .
【输入格式】
每一行输入一组数据分别为A,B,N(1<=A,B<=1000,1<=N<=200000000)
【输出格式】
每一行输出结果 f (n) .
【样例输入】
1 1 3
1 2 10
【样例输出】
2
5
#include<iostream>
using namespace std;
#include<cstdio>
#include<cstring>
#define N 5
#define mod 7
struct Jz{
int line,cal;
int jz[N][N];
}a,ans;
int A,B;
void pre_chuli()
{
a.cal=;a.line=;
a.jz[][]=;a.jz[][]=;
a.jz[][]=B;a.jz[][]=A;
ans.cal=;ans.line=;
ans.jz[][]=;
ans.jz[][]=;
}
Jz matrax(Jz x,Jz y)
{
Jz sum;
sum.line=x.line;sum.cal=y.cal;
memset(sum.jz,,sizeof(sum.jz));
/* for(int i=1;i<=sum.line;++i)
{
for(int j=1;j<=sum.cal;++j)
printf("%d ",sum.jz[i][j]);
printf("\n");
}*/
for(int i=;i<=sum.line;++i)
for(int j=;j<=sum.cal;++j)
{
for(int k=;k<=x.cal;++k)
{
sum.jz[i][j]=(sum.jz[i][j]+x.jz[i][k]*y.jz[k][j])%mod;
}
}
return sum;
}
int Fast_matrax(int n)
{
if(n==) return ans.jz[][];
n-=;/*真正的乘法次数是n-2*/
while(n)
{
if(n&)
{
ans=matrax(a,ans);
}
n>>=;
a=matrax(a,a);
}
return ans.jz[][]%mod;
}
int main()
{
freopen("number1.in","r",stdin);
freopen("number1.out","w",stdout);
int n;
while(scanf("%d%d%d",&A,&B,&n)==)
{
memset(a.jz,,sizeof(a.jz));
a.cal=a.line=;
memset(ans.jz,,sizeof(ans.jz));
ans.cal=ans.line=;
pre_chuli();
printf("%d\n",Fast_matrax(n));
}
fclose(stdin);fclose(stdout);
return ;
}
矩阵乘法快速幂 cojs 1717. 数学序列的更多相关文章
- Qbxt 模拟赛 Day4 T2 gcd(矩阵乘法快速幂)
/* 矩阵乘法+快速幂. 一开始迷之题意.. 这个gcd有个规律. a b b c=a*x+b(x为常数). 然后要使b+c最小的话. 那x就等于1咯. 那么问题转化为求 a b b a+b 就是斐波 ...
- 洛谷 P4910 帕秋莉的手环 矩阵乘法+快速幂详解
矩阵快速幂解法: 这是一个类似斐波那契数列的矩乘快速幂,所以推荐大家先做一下下列题目:(会了,差不多就是多倍经验题了) 注:如果你不会矩阵乘法,可以了解一下P3390的题解 P1939 [模板]矩阵加 ...
- BZOJ-2326 数学作业 矩阵乘法快速幂+快速乘
2326: [HNOI2011]数学作业 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1564 Solved: 910 [Submit][Statu ...
- 【BZOJ-1009】GT考试 KMP+DP+矩阵乘法+快速幂
1009: [HNOI2008]GT考试 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2745 Solved: 1694[Submit][Statu ...
- 矩阵乘法快速幂 codevs 1732 Fibonacci数列 2
1732 Fibonacci数列 2 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 在“ ...
- BZOJ-2875 随机数生成器 矩阵乘法快速幂+快速乘
题目没给全,吃X了... 2875: [Noi2012]随机数生成器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 1479 Solved: 829 ...
- 【BZOJ 2323】 2323: [ZJOI2011]细胞 (DP+矩阵乘法+快速幂*)
2323: [ZJOI2011]细胞 Description 2222年,人类在银河系外的某颗星球上发现了生命,并且携带了一个细胞回到了地球.经过反复研究,人类已经完全掌握了这类细胞的发展规律: 这种 ...
- ACM学习历程—HDU5667 Sequence(数论 && 矩阵乘法 && 快速幂)
http://acm.hdu.edu.cn/showproblem.php?pid=5667 这题的关键是处理指数,因为最后结果是a^t这种的,主要是如何计算t. 发现t是一个递推式,t(n) = c ...
- codevs1281 矩阵乘法 快速幂 !!!手写乘法取模!!! 练习struct的构造函数和成员函数
对于这道题目以及我的快速幂以及我的一节半晚自习我表示无力吐槽,, 首先矩阵乘法和快速幂没必要太多说吧,,嗯没必要,,我相信没必要,,实在做不出来写两个矩阵手推一下也就能理解矩阵的顺序了,要格外注意一些 ...
随机推荐
- 图片轮播器——jquery插件
下载:http://files.cnblogs.com/files/wordblog/jiaoben828.rar
- Coursera在线学习---第一节.梯度下降法与正规方程法求解模型参数比较
一.梯度下降法 优点:即使特征变量的维度n很大,该方法依然很有效 缺点:1)需要选择学习速率α 2)需要多次迭代 二.正规方程法(Normal Equation) 该方法可以一次性求解参数Θ 优点:1 ...
- mysq配置
mysql运维 1.mysql配置文件:/etc/my.cnf mysql日记文件 :安装时候配置的,可以通过ps aux|grep mysqld 查询 ps aux|grep mysqld mysq ...
- 如何在Linux启动的时候执行一个命令
在Linux启动起来时,执行一个命令的设置方法== 例如:需要执行的命令是cvslockd ============第一种方式:根据运行级别配置======================== 第一步 ...
- php+mysql缓存技术的实现
本教程适合于那些对缓存SQL查询以减少数据库连接与执行的负载.提高脚本性能感兴趣的PHP程序员.概述 许多站点使用数据库作为站点数据存储的容器.数据库包含了产器信息.目录结构.文章或者留言本,有些数据 ...
- css给奇数行或偶数行添加指定样式
odd表示奇数行,even表示偶数行; tr:nth-child(odd); .table-striped > tbody > tr:nth-child(odd) { background ...
- Java的Stack类实现List接口真的是个笑话吗
今天在网上闲逛时看到了这样一个言论,说“Java的Stack类实现List接口的设计是个笑话”. 当然作者这篇文章的重点不是这个,原本我也只是一笑置之,然而看评论里居然还有人附和,说“Ja ...
- hdu 5692(dfs序+线段树,好题)
Snacks Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...
- Linux 进程间通信(一)(经典IPC:管道、FIFO)
管道 管道是Unix系统IPC的最古老方式,有两种局限性: (1) 历史上它们是半双工的(即数据只能在一个方向上流动),虽然现在某些系统提供了全双工管道,但是为了可移植性,不要抱有绝对的全双工假设 ...
- Linux的权限对于文件与目录的意义
权限对文件: r:可读取此文件的实际内容. w:可以编辑.新增或者是修改该文件的内容(但不含删除该文件),如果没有r权限,无法w. x :该文件具有被系统执行的权限.可以删除. 权限对目录: r:re ...