2019牛客多校第五场B generator 十进制快速幂
generator 1
题意
给出\(x_0,x_1,a,b\)已知递推式\(x_i=a*x_{i-1}+b*x_{i-2}\),出个n和mod,求\(x_n\) (n特别大)
分析
比赛的时候失了智,一直在想怎么把10进制转化成二进制来求,实际上可以换一种想法,既然转化不成二进制,那么直接就用十进制倍增行吗?只要对快速幂理解透彻,是可以实现的(快速幂的2进制证明改成10进制就证明成功了)
这题有个坑的地方是膜多了会T
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
char s[maxn];
typedef long long ll;
int mod;
struct mat{
ll m[3][3];
mat(){
memset(m,0,sizeof(m));
}
};
mat Mul(mat a,mat b){
mat res;
int i,j,k;
for( i=1;i<=2;i++){
for( j=1;j<=2;j++){
res.m[i][j]=0;
for(k=1;k<=2;k++){
res.m[i][j]+=(a.m[i][k]*b.m[k][j]);
res.m[i][j]%=mod;
}
}
}
return res;
}
mat fpow(mat a,ll b){
mat ans;
for(int i=1;i<=2;i++)ans.m[i][i]=1;
while(b){
if(b&1)ans=Mul(ans,a);
a=Mul(a,a);
b>>=1;
}
return ans;
}
int main(){
int x0,x1,a,b;
scanf("%d%d%d%d",&x0,&x1,&a,&b);
scanf("%s%d",s,&mod);
int len=strlen(s);
mat bs,ans;
bs.m[1][1]=a,bs.m[1][2]=b;
bs.m[2][1]=1;
ans.m[1][1]=ans.m[2][2]=1;
for(int i=len-1;i>=0;i--){
ans=Mul(ans,fpow(bs,s[i]-'0'));
bs=fpow(bs,10);
}
printf("%d",(1ll*x1*ans.m[2][1]%mod+1ll*x0*ans.m[2][2]%mod)%mod);
return 0;
}
2019牛客多校第五场B generator 十进制快速幂的更多相关文章
- 2019牛客多校第五场B-generator 1(矩阵快速幂)
generator 1 题目传送门 解题思路 矩阵快速幂.只是平时的矩阵快速幂是二进制的,这题要用十进制的快速幂. 代码如下 #include <bits/stdc++.h> #defin ...
- 2019牛客多校第五场 B - generator 1 矩阵快速幂+十倍增+二进制倍增优化
B - generator 1 题意 给你\(x_{0}.x_{1}.a.b.b.mod\),根据\(x_{i} = a*x_{i-1} + b*x_{i-2}\)求出\(x_{n}\) 思路 一般看 ...
- 2019 牛客多校第五场 B generator 1
题目链接:https://ac.nowcoder.com/acm/contest/885/B 题目大意 略. 分析 十进制矩阵快速幂. 代码如下 #include <bits/stdc++.h& ...
- 2019牛客多校第五场C generator 2 hash,bsgs模板
generator 2 题意 给出\(x_0,a,b,p\),有方程\(x_i\equiv (a*x_{i-1}+b)(\% p)\),求最小的i,使得\(x_i=v\),不存在输出-1 分析 经过公 ...
- 2019牛客多校第五场C generator 2(BSGS)题解
题意: 传送门 已知递推公式\(x_i = a*x_{i - 1} + b\mod p\),\(p\)是素数,已知\(x_0,a,b,p\),给出一个\(n\)和\(v\),问你满足\(x_i = v ...
- generator 1(2019年牛客多校第五场B题+十进制矩阵快速幂)
目录 题目链接 思路 代码 题目链接 传送门 思路 十进制矩阵快速幂. 代码 #include <set> #include <map> #include <deque& ...
- 2019牛客多校第五场 generator 1——广义斐波那契循环节&&矩阵快速幂
理论部分 二次剩余 在数论中,整数 $X$ 对整数 $p$ 的二次剩余是指 $X^2$ 除以 $p$ 的余数. 当存在某个 $X$,使得式子 $X^2 \equiv d(mod \ p)$ 成立时,称 ...
- 2019牛客多校第五场generator2——BSGS&&手写Hash
题目 几乎原题 BZOJ3122题解 分析 先推一波公式,然后除去特殊情况分类讨论,剩下就是形如 $a^i \equiv b(mod \ p)$ 的方程,可以使用BSGS算法. 在标准的BSGS中,内 ...
- 2019牛客多校第五场F maximum clique 1 最大独立集
题意:给你n个数,现在让你选择一个数目最大的集合,使得集合中任意两个数的二进制表示至少有两位不同,问这个集合最大是多大?并且输出具体方案.保证n个数互不相同. 思路:容易发现,如果两个数不能同时在集合 ...
随机推荐
- java设计模式学习笔记--接口隔离原则
接口隔离原则简述 客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应建立在最小的接口上 应用场景 如下UML图 类A通过接口Interface1依赖类B,类C通过接口Interface1依赖类 ...
- 论文-MobileNetV2: Inverted Residuals and Linear Bottlenecks
1.主要创新 1)提出了一种新的layer module:the inverted residual with linear bottleneck, 2)short connect被置于bottlen ...
- Magento2 updated quote_item table - 更新quote_item 表自定义字段
/** * @param $class * @return mixed */ public function mc_get_obj($class) { return \Magento\Framewor ...
- python如何安装Jupyter notebook
一,安装Jupyter notebook 环境:win10,python3.7 两种安装方式,这里只讲pip安装 pip install jupyter notebook 二,启动Jupyter no ...
- 用友UAP NC 开发环境抛出"JDK默认编辑器找不到"
此节点是升级65之前开发的,已经很久不使用,今天在开发环境使用,点查询抛出此异常. 最后问了人解决方法,就是往JRE系统库加入对应的jar包
- centos 7 安装npm
下载网址https://nodejs.org/dist/latest-v8.x/ 安装过程参考https://blog.csdn.net/micarlxm/article/details/810912 ...
- 输出redis cluster 主从的对应关系,如果同一个主从关系的master和slave在同一个node节点上,在输出的对应关系末尾输出提示
需求:输出redis cluster 主从的对应关系,如果同一个主从关系的master和slave在同一个node节点上,在输出的对应关系末尾输出提示. 为什么会有这样的需求呢?在重新搭建redis ...
- 【巨杉数据库SequoiaDB】省级农信国产分布式数据库应用实践
本文转载自<金融电子化> 原文链接:https://mp.weixin.qq.com/s/WGG91Rv9QTBHPsNVPG8Z5g 随着移动互联网的迅猛发展,分布式架构在互联网IT技术 ...
- 本地文件包含(LFI)漏洞
PHP file://封装 PHP php://filter PHP ZIP封装LFI 通过/proc/self/environ执行LFI 空字节技术 截断LFI绕过 通过邮件给目标机器发送一个反弹s ...
- JavaScript:JSON对象
一.JSON对象概念 JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. JSON 是 JavaScript 原生格式,这意味着在 JavaScri ...