十进制快速幂(牛客多校第五场)-- 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] ...
随机推荐
- JavaWeb-SpringBoot_使用MySQL管理用户登录注册+接入腾讯短信SDK_demo
使用Gradle编译项目 传送门 项目已托管到Github上 传送门 JavaWeb-SpringBoot_一个类实现腾讯云SDK发送短信 传送门 用户注册 用户并非一定要输入正确的手机验证码去激活当 ...
- HDU 5810 Balls and Boxes ——(数学,概率,方差)
官方题解看不太懂,参考了一些人的博客以后自己证明如下: 其中D(X)和E(X)的公式如下(参考自百度百科): 其中 p = 1 / m .(这是每一个单独事件发生的概率期望,在这里单独事件指的是一个球 ...
- Struts ognl表达式语言几个符号
# 获取非根元素值 . 动态都建map集合 $ 配置文件取值 % 提供一个ognl表达式运行环境 <%@ page language="java" import=&q ...
- flutter 打包
iOS打包 iOS打包需要注意一下一些设置 info.plist 设置ATS.白名单.字符串等等 Assets.xcassets 替换icon,替换LaunchImage中内容 注意LaunchIma ...
- OpenStack 虚拟机启动流程 UML 分析(内含 UML 源码)
目录 文章目录 目录 前言 API 请求 Nova API 阶段 Nova Conductor 阶段 Nova Scheduler 阶段 Nova Compute 阶段(计算节点资源分配部分) Nov ...
- java的几种上传文件方法
这时:commonsmultipartresolver 的源码,可以研究一下 http://www.verysource.com/code/2337329_1/commonsmultipartreso ...
- Qt 之水平/垂直布局(QBoxLayout、QHBoxLayout、QVBoxLayout)
简述QBoxLayout可以在水平方向或垂直方向上排列控件,由QHBoxLayout.QVBoxLayout所继承. QHBoxLayout:水平布局,在水平方向上排列控件,即:左右排列. QVBox ...
- golang(06)函数介绍
原文链接 http://www.limerence2017.com/2019/09/11/golang11/#more 函数简介 函数是编程语言中不可缺少的部分,在golang这门语言中函数是一等公民 ...
- eclipse搭建简单的web服务,使用tomcat服务
打开eclipse,新建web project, 若本机安装的eclipse版本高,jdk版本低,提示当前版本不适合,解决方法,通过Windows搜索Java,点击配置Java,之后如下图:
- 使用docker-client创建NFS挂载
docker命令行挂载NFS如下: docker volume create --driver local --opt type=nfs --opt o=addr=192.168.11.129,rw ...