十进制快速幂(牛客多校第五场)-- generator 1
思路:
十进制快速幂。
#include <stdio.h>//sprintf
#include <cstdlib>////malloc exit strcat itoa system("cls")
#include <iostream>//pair
#include <fstream>
#include <bitset>
//#include <map> https://ac.nowcoder.com/acm/contest/885/B
#include <vector>
#include <stack>
#include <set>
#include <string.h>//strstr
#include <string>
#include <time.h>//srand(((unsigned)time(NULL))); Seed n=rand()%10 - 0~9;
#include <cmath>
#include <queue>//priority_queue<long long, vector<long long>, greater<long long> > q;
#include <vector>
//#include <math.h>
//#include <windows.h> https://www.nitacm.com/problem_show.php?pid=222
#include <algorithm>//sort + unique : sz=unique(b+1,b+n+1)-(b+1);+nth_element(first, nth, last, compare)
using namespace std;
#define pr printf
#define sc scanf
#define fo(a,b,c) for((a)=(b);(a)<=(c);(a)++)//register long long i
#define fr(a,b,c) for((a)=(b);(a)>=(c);(a)--)
#define mem(a,b) memset((a),(b),sizeof((a)))
const double e=2.718281828;
const double PI=acos(-1.0);
const double ESP=1e-;
const long long inf=;
const long long N=;
long long mod;
const long long MAXN=; long long x0,x1,a,b,MOD;
struct MAT
{
long long mat[MAXN][MAXN];
MAT()
{
mat[][]=mat[][]=;//对角矩阵 E;
mat[][]=mat[][]=;
}
MAT operator*(const MAT &a)const
{
MAT b;
long long i,j,k;
mem(b.mat,);
fo(i,,MAXN-)
{
fo(j,,MAXN-)
{
fo(k,,MAXN-)
{
b.mat[i][j]=(b.mat[i][j]+mat[i][k]*a.mat[k][j]);
b.mat[i][j]%=mod;
}
}
}
return b;
}
}transfer; MAT Mqpow(MAT x,long long n)
{
struct MAT temp;
while(n)
{
if(n&)
temp=temp*x;
x=x*x;
n>>=;
}
return temp;
} char n[N];
struct MAT mark[],start;
int main()
{
sc("%lld%lld%lld%lld%s%lld",&x0,&x1,&a,&b,n,&MOD);
// mem(transfer.mat,0);
mod=MOD;
transfer.mat[][]=a,transfer.mat[][]=b;
transfer.mat[][]=,transfer.mat[][]=;
start.mat[][]=x1,start.mat[][]=x0;
mark[]=transfer;
for(int i=;i<=;++i)
mark[i]=transfer*mark[i-];
int l=strlen(n);
struct MAT ans;
for(int i=;i<=l-;++i)
{
ans=Mqpow(ans,);
ans=ans*mark[n[i]-''];
}
start=ans*start;
pr("%lld\n",start.mat[][]%MOD);
return ;
}
十进制快速幂(牛客多校第五场)-- generator 1的更多相关文章
- 2019牛客多校第五场 generator 1——广义斐波那契循环节&&矩阵快速幂
理论部分 二次剩余 在数论中,整数 $X$ 对整数 $p$ 的二次剩余是指 $X^2$ 除以 $p$ 的余数. 当存在某个 $X$,使得式子 $X^2 \equiv d(mod \ p)$ 成立时,称 ...
- generator 1(2019年牛客多校第五场B题+十进制矩阵快速幂)
目录 题目链接 思路 代码 题目链接 传送门 思路 十进制矩阵快速幂. 代码 #include <set> #include <map> #include <deque& ...
- 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特别大) 分析 比赛的时候失了智 ...
- 牛客多校第五场B generator1(十进制矩阵快速幂)题解
题意: 已知 \(X_i = a * X_{i - 1} + b * X_{i - 2}\),现给定\(X_0,X_1,a,b\),询问\(X^n \mod p\),其中\(n <= 10^{1 ...
- 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(矩阵快速幂)
generator 1 题目传送门 解题思路 矩阵快速幂.只是平时的矩阵快速幂是二进制的,这题要用十进制的快速幂. 代码如下 #include <bits/stdc++.h> #defin ...
- 牛客多校第五场 B generator 1 矩阵快速幂
题意: 给定$x_0,x_1,a,b,n,mod, x_i=a*x_{i-1}+b*x_{i-2}$ ,求$x_n % mod$ n最大有1e6位 题解: 矩阵快速幂. 巨大的n并不是障碍,写一个十进 ...
- 2019 牛客多校第五场 B generator 1
题目链接:https://ac.nowcoder.com/acm/contest/885/B 题目大意 略. 分析 十进制矩阵快速幂. 代码如下 #include <bits/stdc++.h& ...
- 牛客多校第五场 F take
链接:https://www.nowcoder.com/acm/contest/143/F来源:牛客网 题目描述 Kanade has n boxes , the i-th box has p[i] ...
随机推荐
- FTP服务器安装配置
1.安装:yum install vsftpd -y 2.修改配置文件:cd /etc/vsftpd/ cat vsftpd.conf | grep -Ev '^$|^#' listen_port= ...
- Linux安装JDK、tomcat
修改tomcat 相关配置必须重启后才生效 如何启动tomcat 在终端框内切换到tomcat 的bin路径下 启动tomcat:./startup.sh 关闭tomcat:./shutdown.sh ...
- python2topython3遇到的问题
- 浅析SPDY
1.什么是SPDY? 简单地说,在SSL层上增加一个SPDY会话层,以在一个TCP连接支持并发的HTTP请求.也就是他能通过复用仅仅一条(或几条)TCP连接,在客户端与服务器间发送几十个请求或回应. ...
- GitHub:Tencent
ylbtech-GitHub:Tencent 1.返回顶部 1. https://opensource.tencent.com/ 2. 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶 ...
- Message 消息提示
常用于主动操作后的反馈提示.与 Notification 的区别是后者更多用于系统级通知的被动提醒. 基础用法 从顶部出现,3 秒后自动消失. Message 在配置上与 Notification 非 ...
- Alert 警告
基本用法 页面中的非浮层元素,不会自动消失. Alert 组件提供四种主题,由type属性指定,默认值为info. <template> <el-alert title=" ...
- linux系统安装zint
背景: 今天代码拉下了发现启动时报错,一看原来是同事用了zint的gem,我又没安,然后花了点时间解决,但其中踩了几次坑,所以打算记录下: 一.zint开源库的介绍 zint 是一个开源的条码编码库, ...
- Appium移动自动化测试(三)之元素定位
实验简介 做过UI自动化(web自动化, 移动自动化)的同学都会知道, 除去框架的选型和搭建以外, 落到实处的对元素进行定位就成了最重要的技能. 做过UI自动化的同学会知道, 对页面元素的定位方式有8 ...
- 从Windows系统到Linux系统转变的5大要点
当我在 Algoma (阿尔格玛)大学开始我现在的工作,一个图书系统管理员,我实在是对我的工作没有什么信心.尽管我在图书信息技术上有十年经验,对于我的第一个任务——协助开发和管理 Evergreen ...