思路:

十进制快速幂。

 #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的更多相关文章

  1. 2019牛客多校第五场 generator 1——广义斐波那契循环节&&矩阵快速幂

    理论部分 二次剩余 在数论中,整数 $X$ 对整数 $p$ 的二次剩余是指 $X^2$ 除以 $p$ 的余数. 当存在某个 $X$,使得式子 $X^2 \equiv d(mod \ p)$ 成立时,称 ...

  2. generator 1(2019年牛客多校第五场B题+十进制矩阵快速幂)

    目录 题目链接 思路 代码 题目链接 传送门 思路 十进制矩阵快速幂. 代码 #include <set> #include <map> #include <deque& ...

  3. 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特别大) 分析 比赛的时候失了智 ...

  4. 牛客多校第五场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 ...

  5. 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}\) 思路 一般看 ...

  6. 2019牛客多校第五场B-generator 1(矩阵快速幂)

    generator 1 题目传送门 解题思路 矩阵快速幂.只是平时的矩阵快速幂是二进制的,这题要用十进制的快速幂. 代码如下 #include <bits/stdc++.h> #defin ...

  7. 牛客多校第五场 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并不是障碍,写一个十进 ...

  8. 2019 牛客多校第五场 B generator 1

    题目链接:https://ac.nowcoder.com/acm/contest/885/B 题目大意 略. 分析 十进制矩阵快速幂. 代码如下 #include <bits/stdc++.h& ...

  9. 牛客多校第五场 F take

    链接:https://www.nowcoder.com/acm/contest/143/F来源:牛客网 题目描述 Kanade has n boxes , the i-th box has p[i] ...

随机推荐

  1. JavaWeb-SpringBoot_使用MySQL管理用户登录注册+接入腾讯短信SDK_demo

    使用Gradle编译项目 传送门 项目已托管到Github上 传送门 JavaWeb-SpringBoot_一个类实现腾讯云SDK发送短信 传送门 用户注册 用户并非一定要输入正确的手机验证码去激活当 ...

  2. HDU 5810 Balls and Boxes ——(数学,概率,方差)

    官方题解看不太懂,参考了一些人的博客以后自己证明如下: 其中D(X)和E(X)的公式如下(参考自百度百科): 其中 p = 1 / m .(这是每一个单独事件发生的概率期望,在这里单独事件指的是一个球 ...

  3. Struts ognl表达式语言几个符号

    #  获取非根元素值  . 动态都建map集合 $  配置文件取值 %  提供一个ognl表达式运行环境 <%@ page language="java" import=&q ...

  4. flutter 打包

    iOS打包 iOS打包需要注意一下一些设置 info.plist 设置ATS.白名单.字符串等等 Assets.xcassets 替换icon,替换LaunchImage中内容 注意LaunchIma ...

  5. OpenStack 虚拟机启动流程 UML 分析(内含 UML 源码)

    目录 文章目录 目录 前言 API 请求 Nova API 阶段 Nova Conductor 阶段 Nova Scheduler 阶段 Nova Compute 阶段(计算节点资源分配部分) Nov ...

  6. java的几种上传文件方法

    这时:commonsmultipartresolver 的源码,可以研究一下 http://www.verysource.com/code/2337329_1/commonsmultipartreso ...

  7. Qt 之水平/垂直布局(QBoxLayout、QHBoxLayout、QVBoxLayout)

    简述QBoxLayout可以在水平方向或垂直方向上排列控件,由QHBoxLayout.QVBoxLayout所继承. QHBoxLayout:水平布局,在水平方向上排列控件,即:左右排列. QVBox ...

  8. golang(06)函数介绍

    原文链接 http://www.limerence2017.com/2019/09/11/golang11/#more 函数简介 函数是编程语言中不可缺少的部分,在golang这门语言中函数是一等公民 ...

  9. eclipse搭建简单的web服务,使用tomcat服务

    打开eclipse,新建web project, 若本机安装的eclipse版本高,jdk版本低,提示当前版本不适合,解决方法,通过Windows搜索Java,点击配置Java,之后如下图:

  10. 使用docker-client创建NFS挂载

    docker命令行挂载NFS如下: docker volume create --driver local --opt type=nfs --opt o=addr=192.168.11.129,rw ...