十进制快速幂(牛客多校第五场)-- 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] ...
随机推荐
- 微信小程序mpvue项目使用WuxWeapp前端UI组件
前言:这是一篇简单粗暴的使用指南 在最近的小程序项目里前端UI框架最后选择使用WuxWeapp,这篇文章记录一下如何在小程序mpvue项目中使用该UI组件. 步骤一:下载源码 (地址在这里)主要是里面 ...
- 使用powershell管理域用户
在域内环境中,常常需要使用命令行管理域用户,此时可以使用Active Directory中的命令行工具Dsquery.exe,或CSVE,以及Ldifde等,其实,使用Windows Powershe ...
- Oracle-sql*plus
连接命令 (1)conn[ect] 用法: conn 用户名/密码@网络服务名 [as sysdba/sysoper] 当用特权用户身份连接时,必须带上 as sysdba 或是 as sysoper ...
- web 新能优化
网上的东西太多了都是搜来的东西 留着自己看吧! 摘自 :http://www.cnblogs.com/50614090/archive/2011/08/19/2145620.html 打开网站慢现状分 ...
- Java内存和垃圾回收
Java内存大体上可以分为:本地方法区(线程共享).Java栈(线程隔离).本地方法栈(线程隔离).Java堆(线程共享).程序计数器(线程隔离). 1.本地方法区 各个线程共享的内存区域,只要存放被 ...
- 安装了Node.js 从VScode 使用node -v 和 npm -v等命令却无效
前言 最近写TypeScript需要安装.配置Node.js环境,楼主是使用的安装包所以环境变量都是自动就配好了(如果是下载的zip压缩包解压后要自己配置到系统环境变量中).打开系统终端敲入命令 no ...
- vue路由嵌套,对应展示的视图
- Linux版本
1.内核:Linux内核Kernel目前最新稳定版 3.4 http://www.kernel.org/ 2.发行版本:是一些厂商将Linux系统内核与应用软件和文档包装起来,并提供一些安装界面和系 ...
- javascript定时器方法使用
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0'
发送一个报头,告诉浏览器当前页面不进行缓存,每次访问的时间必须从服务器上读取最新的数据 一般情况下,浏览器为了加快浏览速度会对网页进行缓存,在一定时间内再次访问同一页面的时候会有缓存里面读取而不是从服 ...