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核心编程:《8个实践性建议》

    前言 我们在用Python进行机器学习建模项目的时候,每个人都会有自己的一套项目文件管理的习惯,我自己也有一套方法,是自己曾经踩过的坑踩过的雷总结出来的,现在在这里分享一下给大家,因为很多伙伴是接触P ...

  2. Nuget打包没有注释显示

    1.选中项目-->属性-->生成-->选中 XML文档文件(xml路径和该项目相同) 2.选择生成序列化程序集:自动/开

  3. Electron+Vue – 基础学习(2): 项目打包成exe桌面应用

    项目创建完成,启动正常,接下来就是项目打包了.将测试Demo打包成exe桌面应用,点击exe文件,运行项目. 书接上文,创建项目有三种方式 Git拷贝.直接创建:通过electron社群提供的命令行工 ...

  4. day 17 初始递归

    递归函数 了解什么是递归 : 在函数中调用自身函数 最大递归深度默认是997/998 —— 是python从内存角度出发做的限制 能看懂递归 能知道递归的应用场景 初识递归 —— 算法 —— 二分查找 ...

  5. iMacros 入门教程-基础函数介绍(2)

    imacros 的 pos 参数是什么意思 position的缩写,如果有 2 个以上的元素共用完全相同的属性(比方说同一个小区的同一栋楼),这个 POS 的参数可以借由不同位置来帮助明确定位(也就是 ...

  6. java提取字符串数字,Java获取字符串中的数字

    ================================ ©Copyright 蕃薯耀 2020-01-17 https://www.cnblogs.com/fanshuyao/ 具体的方法如 ...

  7. Apache Avro总结

    参考 Apache Avro™ 1.9.0 Specification Avro介绍 小而巧的数字压缩算法:zigzag   原始类型(Primitive Types) 类型名 描述 描述 二进制编码 ...

  8. Umi 小白纪实(一)—— 创建项目&常用配置

    umi 是一个企业级 react 应用框架,也是蚂蚁金服的底层前端框架 <蚂蚁金服的前端框架和工程化实践> 一.安装脚手架 在创建项目之前,需要保证有 node 8.10 以上的环境 可以 ...

  9. HAProxy 使用小记

    PS:写在开头,虽然HAProxy优点很多,但是现在网上可参考的HAProxy文档真的少之又少,so,我把最近在项目中使用的心得整理下,供大家参考,如有侵权或错误之处,还请联系更正,谢谢! 好了,下面 ...

  10. P3853 [TJOI2007]路标设置(二分答案)

    -------------------------------- 二分答案的典型题 --------------------------------- 注意一下check和输出就行 --------- ...