2018.09.26 bzoj5221: [Lydsy2017省队十连测]偏题(数学推导+矩阵快速幂)
由于没有考虑n<=1的情况T了很久啊。
这题很有意思啊。
考试的时候根本不会,骗了30分走人。
实际上变一个形就可以了。
推导过程有点繁杂。
直接粘题解上的请谅解。
不得不说这个推导很妙。
然后就可以矩阵快速幂优化了。
代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll a,b,n,mod;
struct Matrix{
ll a[3][3];
Matrix(){a[0][0]=a[0][1]=a[0][2]=a[1][0]=a[1][1]=a[1][2]=a[2][0]=a[2][1]=a[2][2]=0;}
inline void init(){a[0][0]=0,a[0][1]=1,a[0][2]=0,a[1][0]=1,a[1][1]=1,a[1][2]=1,a[2][0]=0,a[2][1]=2,a[2][2]=1;}
inline Matrix operator*(Matrix b){
Matrix c;
c.a[0][0]=(a[0][0]*b.a[0][0]%mod+a[0][1]*b.a[1][0]%mod+a[0][2]*b.a[2][0]%mod)%mod;
c.a[0][1]=(a[0][0]*b.a[0][1]%mod+a[0][1]*b.a[1][1]%mod+a[0][2]*b.a[2][1]%mod)%mod;
c.a[0][2]=(a[0][0]*b.a[0][2]%mod+a[0][1]*b.a[1][2]%mod+a[0][2]*b.a[2][2]%mod)%mod;
c.a[1][0]=(a[1][0]*b.a[0][0]%mod+a[1][1]*b.a[1][0]%mod+a[1][2]*b.a[2][0]%mod)%mod;
c.a[1][1]=(a[1][0]*b.a[0][1]%mod+a[1][1]*b.a[1][1]%mod+a[1][2]*b.a[2][1]%mod)%mod;
c.a[1][2]=(a[1][0]*b.a[0][2]%mod+a[1][1]*b.a[1][2]%mod+a[1][2]*b.a[2][2]%mod)%mod;
c.a[2][0]=(a[2][0]*b.a[0][0]%mod+a[2][1]*b.a[1][0]%mod+a[2][2]*b.a[2][0]%mod)%mod;
c.a[2][1]=(a[2][0]*b.a[0][1]%mod+a[2][1]*b.a[1][1]%mod+a[2][2]*b.a[2][1]%mod)%mod;
c.a[2][2]=(a[2][0]*b.a[0][2]%mod+a[2][1]*b.a[1][2]%mod+a[2][2]*b.a[2][2]%mod)%mod;
return c;
}
};
inline ll ksm(ll a,ll b,ll c,int p){
Matrix ret,x;
ret.init(),x.init();
while(p>=1){
if(p&1)ret=ret*x;
x=x*x,p>>=1;
}
return (a*ret.a[0][1]%mod+b*ret.a[1][1]%mod+c*ret.a[2][1]%mod)%mod;
}
int main(){
cin>>a>>b>>mod>>n;
if(n<=1)puts("1");
else cout<<ksm(a,b,sqrt((ll)(3+a*b)),n-2);
return 0;
}
2018.09.26 bzoj5221: [Lydsy2017省队十连测]偏题(数学推导+矩阵快速幂)的更多相关文章
- 2018.09.26 bzoj5218: [Lydsy2017省队十连测]友好城市(回滚莫队)
传送门 比较简单的一道回滚莫队吧. 每次询问用bitset优化kosaraju统计答案. 就是有点难调. 然后向dzyo学长学习了回滚莫队的一种简洁的实现方式,就是直接建立一个sqrt(m)∗sqrt ...
- bzoj 5216 [Lydsy2017省队十连测]公路建设 线段树维护 最小生成树
[Lydsy2017省队十连测]公路建设 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 93 Solved: 53[Submit][Status][ ...
- bzoj 5216: [Lydsy2017省队十连测]公路建设
5216: [Lydsy2017省队十连测]公路建设 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 66 Solved: 37[Submit][St ...
- Lydsy2017省队十连测
5215: [Lydsy2017省队十连测]商店购物 可能FFT学傻了,第一反应是前面300*300背包,后面FFT... 实际上前面背包,后面组合数即可.只是这是一道卡常题,需要注意常数.. //A ...
- ACM-ICPC 2018 焦作赛区网络预赛- L:Poor God Water(BM模板/矩阵快速幂)
God Water likes to eat meat, fish and chocolate very much, but unfortunately, the doctor tells him t ...
- bzoj 5218: [Lydsy2017省队十连测]友好城市
题意: 这题显然直接tarjan是做不了的. 这里安利另一个求SCC的算法Kosaraju,学习的话可以见这篇博客 于是结合莫队,我们有了个暴力. 发现主要瓶颈是dfs过程中找最小的未经过的点,我们用 ...
- 【BZOJ 5222】[Lydsy2017省队十连测]怪题
题目大意: 传送门 给一个长度为$n(n<=200)$的数列$h$,再给$m$个可以无限使用的操作,第$i$个操作为给长度为花费$c_i$的价值给长度为$l_i$的数列子序列+1或-1,求将数列 ...
- BZOJ5217: [Lydsy2017省队十连测]航海舰队 FFT
被FFT的空间卡了半天 后来发现根本不用开那么大... 首先可以把包含舰艇的那个小矩形找出来 将它一行一行连接成一个串T 其中舰艇位置为1其他位置为0 将大矩形也连成串S 其中礁石为1其他为0 两个串 ...
- BZOJ5217:[Lydsy2017省队十连测]航海舰队——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5217 Byteasar 组建了一支舰队!他们现在正在海洋上航行着.海洋可以抽象成一张n×m 的网格 ...
随机推荐
- Java使用poi生成Excel,生成两种表格下拉框
想要使用POI操作以xsl结尾的Excel,首先要下载poi相关的jar包,用到的jar有: poi-3.9.jar poi-ooxml-3.9.jar poi-ooxml-schemas-3.9.j ...
- egret-初步接触
class HelloTime extends egret.DisplayObjectContainer { public constructor() { super(); this.addEvent ...
- inotify用法简介及结合rsync实现主机间的文件实时同步
一.inotify简介 inotify是Linux内核2.6.13 (June 18, 2005)版本新增的一个子系统(API),它提供了一种监控文件系统(基于inode的)事件的机制,可以监控文件系 ...
- 注册COM
可以用代码在程序中实现COM的注册. 举例如下: (假设需要注册的文件为test.ocx)uses OLEctl,....varOCXHand: THandle;RegFunc: TDllRegist ...
- 贝叶斯vs频率派:武功到底哪家强?| 说人话的统计学·协和八(转)
回我们初次见识了统计学理论中的“独孤九剑”——贝叶斯统计学(戳这里回顾),它的起源便是大名鼎鼎的贝叶斯定理. 整个贝叶斯统计学的精髓可以用贝叶斯定理这一条式子来概括: 我们做数据分析,绝大多数情况下希 ...
- linux sleep用法
应用程序:#include <syswait.h>usleep(n) //n微秒Sleep(n)//n毫秒sleep(n)//n秒驱动程序:#include <linux/delay ...
- Mysql Innodb 性能参数设置 https://www.rathishkumar.in/2017/01/how-to-allocate-innodb-buffer-pool-size-in-mysql.html
参考原文: https://www.rathishkumar.in/2017/01/how-to-allocate-innodb-buffer-pool-size-in-mysql.html 查看系统 ...
- azkaban编译安装配置文档
azkaban编译安装配置文档 参考官方文档: http://azkaban.github.io/azkaban/docs/latest/ azkaban的配置文件说明:http://azkaban. ...
- hdoj1160 DP--LIS
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1160 思路: 又是一道LIS的应用题,先预处理,按照w从小到大排列,那么原问题就转变成求该排列的LIS ...
- 第八章 高级搜索树 (xa3)红黑树:插入