矩阵乘法快速幂 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的构造函数和成员函数
对于这道题目以及我的快速幂以及我的一节半晚自习我表示无力吐槽,, 首先矩阵乘法和快速幂没必要太多说吧,,嗯没必要,,我相信没必要,,实在做不出来写两个矩阵手推一下也就能理解矩阵的顺序了,要格外注意一些 ...
随机推荐
- python3学习笔记.2.基础
1.编码 默认编码是 utf-8 # -*- coding: utf-8 -*- 2.注释 单行注释 # 多行注释,用三个单引号或双引号 3.关键字 可在交互窗口查询. >>> i ...
- PHP文本式留言板——php经典实例
文件结构: index.php 主页和添加页 show.php 查看留言页 ly.db 文本保存页 doAdd.php 添加功能页 doDel.php 删除功能页 index.php <htm ...
- 教你如何修改FireFox打开新标签页(NewTab Page)的行列数
FireFox的打开新建标签页(即NewTab Page)默认只能显示3x3个网站缩略图,这9个自定义的网站,非常方便快捷,什么hao123的弱爆了,本人从未用过此类导航网站,曾经用过的也只是abou ...
- PHP中的魔术方法和关键字
PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep ...
- Delphi根据字符串实例化对象
我们可以通过ClassRegistry单元的TClassRegistry类很轻松的根据字符串创建出对象. 下面是该类几个主要函数的说明: // 获取TClassRegistry自身的单例引用class ...
- 什么是VC、PE、LP、GP?
天使基金主要关注原创项目构思和小型初创项目,投资规模大多在300万元以下:风险投资关注初创时期企业长期投资,规模在1000万元以下:私募股权投资主要关注3年内可以上市的成熟型企业. VC即ventur ...
- open()函数文件操作
open函数,该函数用于文件处理 操作文件时,一般需要经历如下步骤: (1)打开文件 (2)操作文件 一.打开文件 文件句柄 = open("文件路径","模式& ...
- js 表
setInterval("body.innerHTML=new Date().toLocaleString()+' 星期'+'日一二三四五六'.charAt(new Date().getDa ...
- 【51nod】1309 Value of all Permutations
题解 可重元素的全排列都是很熟知的东西了 就是 \(\frac{n!}{\prod c_{i}!}\)其中\(c_{i}\)是第i种数出现的次数 我们对于每个元素统计一下多少排列里这个数会被统计进去 ...
- CentOS7.6使用flatpak安装软件
1.安装flatpak(CentOS 7已默认安装Flatpak) yum -y install flatpak 2.添加Flathub仓库 flatpak remote-add --if-not-e ...