题意:给定x0,x1,a,b,满足xi=a*xi-1+b*xi-2; 求xn,n<10^(10^6);

思路:10进制快速幂裸题。降幂来写好像也是可以的,但是循环节不是phi(mod),所以数学不好就还是用10进制快速幂吧。

10进制快速幂:复杂度O(n*log10*K^3); 复杂度也不低,所以要尽量少做mod运算。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll Mod;
inline ll mul(ll x,ll y,ll p){
return x*y%p;
}
struct mat
{
ll M[][];
mat() { M[][]=M[][]=M[][]=M[][]=; }
mat friend operator *(mat a,mat b)
{
mat res;
for(int k=;k<=;k++)
for(int i=;i<=;i++)
for(int j=;j<=;j++)
res.M[i][j]+=a.M[i][k]*b.M[k][j];//每次取mod复杂度会过高。
for(int i=;i<=;i++)
for(int j=;j<=;j++)
res.M[i][j]%=Mod;
return res;
}
mat friend operator ^(mat a,int x)
{
mat res; res.M[][]=res.M[][]=1LL;
while(x){
if(x&) res=res*a; a=a*a; x/=;
} return res;
}
};
char c[];int x[];
int main()
{
int T; ll X0,X1,A,B,N;
T=;
while(T--){
scanf("%lld%lld%lld%lld",&X0,&X1,&A,&B);
scanf("%s%lld",c+,&Mod);
int len=strlen(c+);
for(int i=;i<=len;i++) x[i]=c[i]-'';
x[len]--;
for(int i=len;i>=;i--){
if(x[i]<) x[i-]--,x[i]+=;
}
mat base,a,ans;
ans.M[][]=ans.M[][]=;
base.M[][]=A%Mod; base.M[][]=B%Mod; base.M[][]=1LL;
a.M[][]=X1%Mod,a.M[][]=X0%Mod;
for(int i=len;i>=;i--){
if(x[i]) ans=ans*(base^x[i]);
base=base^;
}
ans=ans*a;
printf("%lld\n",ans.M[][]%Mod);
}
return ;
}

2019牛客暑期多校训练营(第五场)B:generator 1 (10进制快速幂)的更多相关文章

  1. 2019牛客暑期多校训练营(第五场) maximum clique 1

    题意:给出n个不相同的数,问选出尽量多的数且任两个数字二进制下不同位数大于等于2. 解法:能想到大于等于2反向思考的话,不难发现这是一个二分图,那么根据原图的最大团等于补图的最大独立点集,此问题就变成 ...

  2. 2019牛客暑期多校训练营(第九场)A:Power of Fibonacci(斐波拉契幂次和)

    题意:求Σfi^m%p. zoj上p是1e9+7,牛客是1e9:  对于这两个,分别有不同的做法. 前者利用公式,公式里面有sqrt(5),我们只需要二次剩余求即可.     后者mod=1e9,5才 ...

  3. 2019牛客暑期多校训练营(第一场)A题【单调栈】(补题)

    链接:https://ac.nowcoder.com/acm/contest/881/A来源:牛客网 题目描述 Two arrays u and v each with m distinct elem ...

  4. 2019牛客暑期多校训练营(第一场) B Integration (数学)

    链接:https://ac.nowcoder.com/acm/contest/881/B 来源:牛客网 Integration 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 5242 ...

  5. 2019牛客暑期多校训练营(第一场) A Equivalent Prefixes ( st 表 + 二分+分治)

    链接:https://ac.nowcoder.com/acm/contest/881/A 来源:牛客网 Equivalent Prefixes 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/ ...

  6. 2019牛客暑期多校训练营(第二场)F.Partition problem

    链接:https://ac.nowcoder.com/acm/contest/882/F来源:牛客网 Given 2N people, you need to assign each of them ...

  7. 2019牛客暑期多校训练营(第一场)A Equivalent Prefixes(单调栈/二分+分治)

    链接:https://ac.nowcoder.com/acm/contest/881/A来源:牛客网 Two arrays u and v each with m distinct elements ...

  8. [状态压缩,折半搜索] 2019牛客暑期多校训练营(第九场)Knapsack Cryptosystem

    链接:https://ac.nowcoder.com/acm/contest/889/D来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言52428 ...

  9. 2019牛客暑期多校训练营(第九场)B Quadratic equation (平方剩余)

    \((x+y)\equiv b\pmod p\) \((x\times y)\equiv c\pmod p\) 由第一个式子可知:\(x+y=b~or~x+y=b+p\) 先任选一个代入到第二个式子里 ...

  10. 2019牛客暑期多校训练营(第二场)J-Subarray(思维)

    >传送门< 前言 这题我前前后后看了三遍,每次都是把网上相关的博客和通过代码认真看了再思考,然并卵,最后终于第三遍也就是现在终于看懂了,其实懂了之后发现其实没有那么难,但是的的确确需要思维 ...

随机推荐

  1. odoo前端必填提示

  2. Maven 教程(19)— Maven的六类属性

    原文地址:https://blog.csdn.net/liupeifeng3514/article/details/79776666 内置属性 主要有两个常用内置属性:${basedir}项目的根目录 ...

  3. SpringBoot 应用篇之从 0 到 1 实现一个自定义 Bean 注册器

    191213-SpringBoot 应用篇之从 0 到 1 实现一个自定义 Bean 注册器 我们知道在 spring 中可以通过@Component,@Service, @Repository 装饰 ...

  4. 【转帖】netstat命令总结

    netstat命令总结 https://www.cnblogs.com/chenqionghe/p/10654109.html nestat介绍 netstat是一款命令行工具,可用于列出系统上所有的 ...

  5. KAFKA 节点配置问题

    -- ::, INFO o.a.j.e.StandardJMeterEngine: Running the test! -- ::, INFO o.a.j.s.SampleEvent: List of ...

  6. 【转】AXI_Lite 总线详解

    目录: · 1.前言 · 2.AXI总线与ZYNQ的关系 · 3 AXI 总线和 AXI 接口以及 AXI 协议 · 3.1 AXI 总线概述 · 3.2 AXI 接口介绍 ·3.3 AXI 协议概述 ...

  7. 『2019Summer Algorithms』

    一个暑假两次集训,感觉学了好多好多的东西,也挖了好多好多的坑,于是就决定写一篇关于算法的总结,用于熟悉新算法,也留下一点对新算法的理解. AC自动机 简单的说就是在\(trie\)树上实现\(KMP\ ...

  8. 『Broken Robot 后效性dp 高斯消元』

    Broken Robot Description 你作为礼物收到一个非常聪明的机器人走在矩形板上.不幸的是,你明白它已经破碎并且行为相当奇怪(随机).该板由N行和M列单元组成.机器人最初位于第i行和第 ...

  9. Java 8——Lambda表达式

    本篇文章不介绍Lambda的前世今生,这里只对Lambda表达的应用做详细了解.以及与内部类的差异点. Lambda表达式 Lambda表达式是Java SE 8版本中引入的新的语法糖.将功能看做方法 ...

  10. Visual C++ 2010 SP1 x86&x64

    Microsoft Visual C++ 2010 SP1 Redistributable Package (x86) https://www.microsoft.com/en-us/download ...