题目链接:点击查看

题目大意:给出函数f(x):

现给出n,a,b,c,mod,求f(n)对mod取模后的结果

题目分析:这个题目相对于前几个题来说稍微加大了点难度,但还是挺水的一个题,首先我们可以对f(x)的两边取以a为底的log,然后就可以很轻松的得出指数的递推式了

g(n)=g(n-1)*c+g(n-2)+b

接下来我们先于指数进行矩阵快速幂:

初始矩阵:(取n=2即可)

g(n-1) g(n-2) b

辅助矩阵:

c 1 0
1 0 0
1 0 1

答案矩阵:

g(n) g(n-1) b

可是问题来了,根据该递推式求出的答案,当n逐渐变大的同时,肯定会爆掉longlong,我们是不是需要再写一个大整数的类来辅助一下呢?答案是不是,我们这里引进一下费马小定理降幂,直接说结论吧:

,当且仅当p与a互质时成立

这里提一嘴,还有一个更强大的降幂方法是欧拉降幂,广义的欧拉降幂可以处理a与p不互质的情况,因为这个题目中的p已经保证了肯定是质数,所以用费马小定理降幂更简单一些

知道了怎么取模,我们就可以先用矩阵快速幂跑出来质数,然后再跑一次快速幂答案就出来了

有一个细节需要注意一下,就是我们需要提前判断一下a%p是否等于零,若等于零我们直接输出0即可,不特判一下的话会WA

上代码:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
#define Pi acos(-1.0)
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;LL mod;const int N=3;struct Ma
{LL a[N][N];Ma(){memset(a,0,sizeof(a));}friend Ma operator*(const Ma& a,const Ma& b){Ma ans;for(int i=0;i<N;i++)for(int j=0;j<N;j++){ans.a[i][j]=0;for(int k=0;k<N;k++){ans.a[i][j]=(ans.a[i][j]+a.a[i][k]*b.a[k][j]%mod)%mod;}}return ans;}
};Ma q_pow(Ma a,LL b)
{Ma ans;for(int i=0;i<N;i++)ans.a[i][i]=1;while(b){if(b&1)ans=ans*a;a=a*a;b>>=1;}return ans;
}LL q_pow(LL a,LL b,LL mod)
{LL ans=1;while(b){if(b&1)ans=ans*a%mod;a=a*a%mod;b>>=1;}return ans;
}int main()
{
//  freopen("input.txt","r",stdin);int w;cin>>w;while(w--){LL n,a,b,c;scanf("%lld%lld%lld%lld%lld",&n,&a,&b,&c,&mod);mod--;if(a%(mod+1)==0)//这里需要特判,不然会WA{printf("0\n");continue;}if(n==1){printf("%lld\n",1%(mod+1));continue;}else if(n==2){printf("%lld\n",q_pow(a,b,mod+1));continue;}Ma st;st.a[0][0]=b;st.a[0][1]=0;st.a[0][2]=b;Ma ans;ans.a[0][0]=c;ans.a[0][1]=1;ans.a[1][0]=1;ans.a[2][0]=1;ans.a[2][2]=1;ans=q_pow(ans,n-2);printf("%lld\n",q_pow(a,(st*ans).a[0][0],mod+1));}return 0;
}

HDU - 5667 Sequence(矩阵快速幂+费马小定理降幂)相关推荐

  1. HDU 4549 M斐波那契数列(矩阵快速幂费马小定理)

    ps:今天和战友聊到矩阵快速幂,想到前几天学长推荐去刷矩阵专题,挑了其中唯一一道中文题,没想到越过山却被河挡住去路... 题目链接:[kuangbin带你飞]专题十九 矩阵 R - M斐波那契数列 T ...

  2. HDU4549 M斐波那契数列(矩阵快速幂+费马小定理)

    Problem Description M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) ...

  3. 洛谷 [P1593 因子和] {快速幂+费马小定理求逆元+求解质因子} 奋斗的珂珂~

    题目描述 输入两个整数 a 和 b,求 aba^bab 的因子和. 由于结果太大,只要输出它对 9901 取模的结果. 输入格式 仅一行,为两个整数 a和 b. 输出格式 输出一行一个整数表示答案对 ...

  4. 51nod 1013快速幂 + 费马小定理

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1013 这是一个等比数列,所以先用求和公式,然后和3^(n+1)有关,有n ...

  5. Codeforces 696C. PLEASE(快速幂+费马小定理)

    题目链接 题目大意 三个杯子,硬币一开始在中间的杯子里,每次操作可能是左边和中间或右边和中间交换,问n次操作后,硬币在中间的概率 思路 设 f(n) f(n) 是n次操作后硬币在中间的概率,则很明显, ...

  6. HDU - 7054 Yiwen with Formula 分治拆位FFT + dp + 费马小定理降幂

    传送门 文章目录 题意: 思路: 题意: 求aaa的所有子序列的和的乘积. 思路: 看到suma≤1e5sum_a\le1e5suma​≤1e5,这应该会给我们提示,但是我没看到. 我们可以记cntx ...

  7. HDU 4382 【矩阵快速幂】【欧拉降幂】

     自己的思路写的 102 × 102 大小的转化矩阵,好在线代学的还行想到用矩阵分块乘法过了- 看其他人的题解用的 3 × 3  构造一个 转化矩阵 T T T ,一个用来存储结果的 P P P  先 ...

  8. 1916. 统计为蚁群构筑房间的不同顺序 费马小定理+快速幂+DFS

    1916. 统计为蚁群构筑房间的不同顺序 你是一只蚂蚁,负责为蚁群构筑 n 间编号从 0 到 n-1 的新房间.给你一个 下标从 0 开始 且长度为 n 的整数数组 prevRoom 作为扩建计划.其 ...

  9. 牛客小白月赛28 A牛牛和牛可乐的赌约 (数论-费马小定理)

    题目 A牛牛和牛可乐的赌约 题目链接 传送门 题解 注意阅读题目是计算牛牛输的概率. 需要掌握的知识点 快速幂 费马小定理 分数取模 首先我们容易知道 牛牛 赢的概率是 1 n m \frac{1}{ ...

最新文章

  1. 恢复Opera11.50地址栏的下拉列表按钮
  2. linux安装jetty部署war包,jetty部署war包
  3. MVC4 下DropDownList使用方法(转)
  4. 小心多任务设计被滥用
  5. 教育技术c语言考研试题,C南京师范大学教育技术学考研真题 C语言与Web技术真题(2005--2008)...
  6. java大数据组件Flume
  7. 【算法】java 用 数组 模拟 队列
  8. python及拓展版_python扩展模块
  9. HTML5+CSS3 为图书简介页面添加图像及视频
  10. 孙玄:人工智能时代,你需要掌握的经典大规模文本相似识别架构和算法
  11. 鹏鹏:python 机器学习初学者 三剑客介绍。
  12. 四维超混沌系统matlab
  13. 博雅数智|第四次直播|PageRank算法
  14. Qt网编实现音乐播放器的使用(Linux搭建服务器)
  15. PLC模拟量输入 模拟量转换FC S_ITR (CODESYS平台)
  16. 戴老师论文阅读:Two-Timescale Channel Estimation for Reconfigurable Intelligent Surface Aided Wireless...
  17. 1602液晶显示实验
  18. 求支援!单身盆友看过来|「如何用大数据算法找对象?」
  19. 随机森林回归预测r语言_使用随机森林(R语言)做回归
  20. IPTABLES常规操作规则与放行

热门文章

  1. 谈谈GIS三维渲染引擎
  2. Java领域的对象如何传输-如何解决报错的问题呢?
  3. MyBatis 实际使用案例-一级标签
  4. Redis中的可用性保证之Sentinel故障转移
  5. 缓存redis的实现思路
  6. Aop动态代理解决问题
  7. SVN目录结构及作用
  8. aop实现原理-动态代理CGLib代理
  9. spring事务环境搭建
  10. FastDFS在项目中的应用