https://ac.nowcoder.com/acm/problem/200658

f(n) = f(n-1) * f(n-2) * ab ,f的第一项是x,第二项是y。

试着推出第三项是x·y·ab,第四项是x·y2·a2b,第五项是x2·y3·a4b,第六项是x3y5a7b

可以发现x的指数成1 0 1 1 2 3,y的指数0 1 1 2 3 5,a的指数是0 0 b 2b 4b 7b。

x和y的指数为斐波那契数列,a的指数规律为,除去系数b,其第n项前两项之和+1。

由于数据范围很大,所以可以用矩阵快速幂求出x y a的指数的第n项是多少。

x和y的乘法矩阵比较好构造

1 1

1 0

对于b的乘法矩阵,因为f(n)= f(n-1)+ f(n-2)+ 1

所以可以构造为:

1 1 1

1 0 0

0 0 1

因为最终是要求x·y·a的某次幂,且mod = 1e9+7是一个素数,所以这里再矩阵快速幂求解的过程中用费马小定理进行降幂操作

因为ap-1≡1%p,所以ab%p = ab%(p-1)%p,在矩阵快速幂计算过程中矩阵元素相乘对mod-1取模而不是mod

求出指数后,再用快速幂求解即可

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod = 1e9+;
struct Matrix {
ll a[][];
Matrix() { memset(a, , sizeof a); }
Matrix operator*(const Matrix &b) const {//重载矩阵乘法
Matrix res;
for (int i = ; i <= ; ++i)
for (int j = ; j <= ; ++j)
for (int k = ; k <= ; ++k)
res.a[i][j] = (res.a[i][j] + (a[i][k] * b.a[k][j] )%(mod-) ) % (mod-);
return res;
}
}base1,base2,B,X,Y; void init(){
base1.a[][] = base1.a[][] = base1.a[][] = ;
base2.a[][] = base2.a[][] = base2.a[][] = base2.a[][] = base2.a[][] = ;
B.a[][] = X.a[][] = Y.a[][] = ;
}
Matrix qpow(Matrix a,ll n) {
Matrix res;
res.a[][] = res.a[][] = res.a[][] = ;
while (n) {
if (n & ) res = res * a;
a = a * a;
n >>= ;
}
return res;
}
ll power(ll a,ll n){
ll res=;
a = a % mod;
while(n){
if(n&)res=res*a%mod;
n>>=;
a=a*a% mod;
}
return res;
} int main(){
ll n,x,y,a,b;
cin>>n>>x>>y>>a>>b;
if(n == ) {
cout<<x%mod;
return ;
}
if(n == ){
cout<<y%mod;
return ;
}
if(x%mod==||y%mod==||a%mod==){cout<<;return ;}
x%=mod,y%=mod;
init();
Matrix b1 = qpow(base1,n-);
Matrix b2 = qpow(base2,n-);
X = b1*X,Y = b1*Y,B = b2*B;
ll Cx = X.a[][],Cy = Y.a[][],Cb = B.a[][];
a = power(a%mod,b);
ll ans = ((power(x,Cx)*power(y,Cy)%mod)*power(a,Cb)%mod);
cout<<ans;
return ;
}

2020牛客寒假算法基础集训营1 J. 缪斯的影响力 (矩阵快速幂/费马小定理降幂)的更多相关文章

  1. 2020牛客寒假算法基础集训营2 J题可以回顾回顾

    2020牛客寒假算法基础集训营2 A.做游戏 这是个签到题. #include <cstdio> #include <cstdlib> #include <cstring ...

  2. 2020牛客寒假算法基础集训营1 J题可以回顾回顾

    2020牛客寒假算法基础集训营1 这套题整体来说还是很简单的. A.honoka和格点三角形 这个题目不是很难,不过要考虑周全,面积是1,那么底边的长度可以是1也可以是2, 注意底边1和2会有重复的, ...

  3. 2020牛客寒假算法基础集训营2 J.求函数 (线段树 推公式 单点修改 区间查询)

    https://ac.nowcoder.com/acm/contest/3003/J 题解: #include<bits/stdc++.h> typedef long long ll; u ...

  4. 2020牛客寒假算法基础集训营4 J 二维跑步

    https://ac.nowcoder.com/acm/contest/view-submission?submissionId=43035417 假设有i步选择不动,就有n-i步移动 假设其中又有a ...

  5. 2020牛客寒假算法基础集训营4-F树上博弈

    链接:https://ac.nowcoder.com/acm/contest/3005/F来源:牛客网 题目描述 现有一个 n 个点,n-1条边组成的树,其中 1 号点为根节点. 牛牛和牛妹在树上玩游 ...

  6. 2020牛客寒假算法基础集训营4-I 匹配星星【贪心】

    链接:https://ac.nowcoder.com/acm/contest/3005/I来源:牛客网 示例1 输入 复制 2 1 1 0 2 2 1 2 1 1 0 2 2 1 输出 复制 1 1 ...

  7. 2020牛客寒假算法基础集训营1 F-maki和tree

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

  8. 牛客寒假算法基础集训营5 J 炫酷数学

    链接:https://ac.nowcoder.com/acm/contest/331/J来源:牛客网 小希最近想知道一个东西,就是A+B=A|B(其中|为按位或)的二元组有多少个. 当然,直接做这个式 ...

  9. 2020牛客寒假算法基础集训营5 G街机争霸

    题目描述 哎,又是银首,要是你这个签到题少WA一发就金了 牛牛战队的队员打完比赛以后又到了日常甩锅的时间.他们心情悲伤,吃完晚饭以后,大家相约到一个街机厅去solo.牛牛和牛能进入了一个迷宫,这个迷宫 ...

随机推荐

  1. 全面了解Python中的特殊语法:filter、map、reduce、lambda。

    这篇文章主要介绍了Python中的特殊语法:filter.map.reduce.lambda介绍,本文分别对这个特殊语法给出了代码实例,需要的朋友可以参考下filter(function, seque ...

  2. Python 获取本地主机信息

    import wmi c = wmi.WMI() for sys in c.Win32_OperatingSystem(): #系统信息 print(sys.Caption) #系统版本号 print ...

  3. python选课系统作业

    # 选课系统# 角色:学校.学员.课程.讲师# 要求:# 1. 创建北京.上海 2 所学校# 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海 ...

  4. Resnet——深度残差网络(二)

    基于上一篇resnet网络结构进行实战. 再来贴一下resnet的基本结构方便与代码进行对比 resnet的自定义类如下: import tensorflow as tf from tensorflo ...

  5. 修改 div 的滚动条的样式

    修改 div 的滚动条的样式 需要用到浏览器专属的伪元素,没有万能的办法,支持的浏览器不是很多. 假设有一个(你已经)设好宽高.定好位的 div, <div class="group- ...

  6. CSS背景说明及连写

    一.CSS背景说明 CSS 可以添加背景颜色和背景图片,以及来进行图片设置. 1.1 背景图片(image) background-image 属性允许指定一个图片展示在背景中(只有CSS3才可以多背 ...

  7. JavaSE学习笔记(14)---File类和IO流(字节流和字符流)

    JavaSE学习笔记(14)---File类和IO流(字节流和字符流) File类 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 构造方 ...

  8. 【spring boot】SpringBoot初学(9.1)– 简单配置corsFilter对跨域请求支持

    前言 只是简单的配置实现了cors,并没有讲任何东西.(有兴趣的可看: CORS 跨域 实现思路及相关解决方案) github: https://github.com/vergilyn/SpringB ...

  9. day 12 函数

    函数 函数的定义和调用 def 函数名(形参): 函数体 return 返回值 调用 函数名(实参) 站在形参的角度上: 位置参数, *args, 默认参数(陷阱), 关键字参数, **kwargs ...

  10. Kemaswill 机器学习 数据挖掘 推荐系统 Python optparser模块简介

      Python optparser模块简介