P1397 [NOI2013]矩阵游戏
首先显然可以矩乘快速幂然后 $T$ 飞
看一眼题解发现因为这一题矩阵的特殊性所以可以对矩阵的次数欧拉降幂
然而我并不懂证明,所以我选择暴力乱搞的做法
十进制快速幂,然后注意一下常数,还有矩阵乘的顺序,别反了
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
inline int read()
{
int x=,f=; char ch=getchar();
while(ch<''||ch>'') { if(ch=='-') f=-; ch=getchar(); }
while(ch>=''&&ch<='') { x=(x<<)+(x<<)+(ch^); ch=getchar(); }
return x*f;
}
const int N=1e6+,mo=1e9+;
char n[N],m[N];
struct Matrix {
int a[][];
Matrix () { memset(a,,sizeof(a)); }
inline Matrix operator * (const Matrix &tmp) const {
Matrix res;
res.a[][]=(1ll*a[][]*tmp.a[][]+1ll*a[][]*tmp.a[][])%mo;
res.a[][]=(1ll*a[][]*tmp.a[][]+1ll*a[][]*tmp.a[][])%mo;
res.a[][]=(1ll*a[][]*tmp.a[][]+1ll*a[][]*tmp.a[][])%mo;
res.a[][]=(1ll*a[][]*tmp.a[][]+1ll*a[][]*tmp.a[][])%mo;
//循环展开优化常数
return res;
}
}F,G,Ans;
Matrix ksm(Matrix x,char *y)//十进制快速幂
{
Matrix res,t; res.a[][]=res.a[][]=;
for(int i=strlen(y+);i;i--)
{
t=x;
if(y[i]=='') { t=t*t; t=t*t; t=t*t; t=t*x; res=res*t; }
else if(y[i]=='') { t=t*t; t=t*t; t=t*t; res=res*t; }
else for(int j=;j<=y[i]-'';j++) res=res*x;
t=x; x=x*x; x=x*x; x=x*x; x=x*t; x=x*t;
}
return res;
}
void Minus(char *s)//把数减一
{
for(int i=strlen(s+);i;i--)
if(s[i]=='') s[i]='';
else { s[i]=s[i]-; break; }
}
int main()
{
int a,b,c,d; scanf("%s",n+); scanf("%s",m+);
a=read(),b=read(),c=read(),d=read();
Ans.a[][]=Ans.a[][]=;
F.a[][]=a; F.a[][]=b; F.a[][]=;
G.a[][]=c; G.a[][]=d; G.a[][]=;
Minus(n); Minus(m);
F=ksm(F,m); G=F*G; G=ksm(G,n);
Ans=Ans*G*F;
printf("%d\n",Ans.a[][]);
return ;
}
P1397 [NOI2013]矩阵游戏的更多相关文章
- P1397 [NOI2013]矩阵游戏(递推)
P1397 [NOI2013]矩阵游戏 一波化式子,$f[1][m]=a^{m-1}+b\sum_{i=0}^{m-2}a^i$,用快速幂+逆元求等比数列可以做到$logm$ 设$v=a^{m-1}, ...
- 洛谷P1397 [NOI2013]矩阵游戏
矩阵快速幂+费马小定理 矩阵也是可以跑费马小定理的,但是要注意这个: (图是盗来的QAQ) 就是说如果矩阵a[i][i]都是相等的,那么就是mod p 而不是mod p-1了 #include< ...
- 洛谷P1397 [NOI2013]矩阵游戏(十进制矩阵快速幂)
题意 题目链接 Sol 感觉做这题只要对矩阵乘法理解的稍微一点就能做出来对于每一行构造一个矩阵A = a 1 0 b列与列之间的矩阵为B = c 1 0 d最终答案为$A^{n - ...
- luogu P1397 [NOI2013]矩阵游戏
传送门 题目中那两个递推式显然可以写成矩乘的形式,然后十进制快速幂即可.这里不再赘述 只有两个递推式,我们可以考虑一波推式子,首先第一行的元素应该分别是\(1,a+b,a^2+ab+b,a^3+a^2 ...
- bzoj 3240: [Noi2013]矩阵游戏 矩阵乘法+十进制快速幂+常数优化
3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 613 Solved: 256[Submit][Status] ...
- BZOJ 3240: [Noi2013]矩阵游戏
3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1586 Solved: 698[Submit][Status ...
- BZOJ 3240([Noi2013]矩阵游戏-费马小定理【矩阵推论】-%*s-快速读入)
3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 123 Solved: 73 [ Submit][ St ...
- (十进制高速幂+矩阵优化)BZOJ 3240 3240: [Noi2013]矩阵游戏
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=3240 3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec M ...
- 【bzoj3240 && 洛谷P1397】矩阵游戏[NOI2013](矩阵乘法+卡常)
题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3240 这道题其实有普通快速幂+费马小定理的解法……然而我太弱了,一开始只想到了矩阵乘法的 ...
随机推荐
- [BZOJ2002][洛谷P3203][Hnoi2010]Bounce 弹飞绵羊(LCT维护链长)
luogu传送门 2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 16082 Solved: ...
- Java使用FileOutputStream写入文件
From: http://beginnersbook.com/2014/01/how-to-write-to-a-file-in-java-using-fileoutputstream/ /* 使用F ...
- Linux上Redis安装和简单操作
Redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorte ...
- (转)php中字符过滤
有时候为了安全起见,我们需要对用户输入的字符串进行转义 文章中有不正确的或者说辞不清的地方,麻烦大家指出了--- 与PHP字符串转义相关的配置和函数如下: 1.magic_quotes_r ...
- ctf活动结果
签到题:flag{0ca175b9c0f726831d895e269332461} 解题过程:使用winhex打开图片,查询到ANSI ASCII 得到结果 1.SimCTF{hello simple ...
- python3笔记十:python数据类型-Tuple元组
一:学习内容 元组概念 元组创建.访问.删除 元组操作 元组方法 二:元组概念 1.本质:是一种有序集合 2.特点:与列表非常相似.一旦初始化就不能修改.使用小括号 三:元组创建 1.创建空元组 tu ...
- Java-线程等待、唤醒与中断
一.sleep() 与 wait() 两者都会让当前线程进入等待状态.唤醒后都需要等待 CPU 资源,不一定会立即执行.若在等待期间被调用此线程的的 interrupt() 方法,将会产生 Inter ...
- 线性回归linear regression(python脚本实现)
python机器学习-乳腺癌细胞挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...
- 统计学_样本量估计_python代码实现
python机器学习-乳腺癌细胞挖掘(博主亲自录制视频)https://study.163.com/course/introduction.htm?courseId=1005269003&ut ...
- BeanDefinition 实例
BeanDefinition BeanDefinition /** * BeanDefinition 用于描述一个 bean 实例,包括属性值.构造参数和补充信息. */ public interfa ...