Holion August will eat every thing he has found.

Now there are many foods,but he does not want to eat all of them at once,so he find a sequence.

fn=⎧⎩⎨⎪⎪1,ab,abfcn−1fn−2,n=1n=2otherwisefn={1,n=1ab,n=2abfn−1cfn−2,otherwise

He gives you 5 numbers n,a,b,c,p,and he will eat fnfn foods.But there are only p foods,so you should tell him fnfn mod p.

Input        The first line has a number,T,means testcase.

Each testcase has 5 numbers,including n,a,b,c,p in a line.

1≤T≤10,1≤n≤1018,1≤a,b,c≤109    1≤T≤10,1≤n≤1018,1≤a,b,c≤109,pp is a prime number,and p≤109+7p≤109+7.Output        Output one number for each case,which is fnfn mod p.Sample Input

1
5 3 3 3 233

Sample Output

190


代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<set>
#include<algorithm>
#include<vector>
#include<cmath>const int maxn=1e5+5;
typedef long long ll;
using namespace std;struct mat
{ll s[3][3];
};
ll nn,a,b,c,p;
ll ksm(ll x,ll y)
{ll ans=1;while(y){if(y&1)ans=(ans*x)%p;y>>=1;x=x*x%p;}return ans;
}
mat Mul(mat x,mat y)
{mat ans;memset(ans.s,0,sizeof(ans.s));for(int t=0;t<3;t++){for(int j=0;j<3;j++){for(int k=0;k<3;k++){ans.s[t][j]=(ans.s[t][j]+(x.s[t][k]*y.s[k][j]))%(p-1);//费马小定理
            }}}return ans;
}
mat ans;
ll QuickPow(ll n)
{mat res;memset(res.s,0,sizeof(res.s));res.s[0][0]=c;res.s[0][1]=1;res.s[0][2]=1;res.s[1][0]=1;res.s[2][2]=1;while(n){if(n&1){ans=Mul(res,ans);}n>>=1;res=Mul(res,res);}return ans.s[0][0];
}
int main()
{int T;scanf("%d",&T);while(T--){scanf("%lld%lld%lld%lld%lld",&nn,&a,&b,&c,&p);if(nn==1){printf("1\n");}else if(nn==2){printf("%lld\n",ksm(a,b));}else{ans.s[0][0]=b;ans.s[1][0]=0;ans.s[2][0]=b;ll ss=QuickPow(nn-2);printf("%lld\n",ksm(a,ss+p-1));//费马小定理
        }}return 0;
}

转载于:https://www.cnblogs.com/Staceyacm/p/10896830.html

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

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

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

  2. HDU - 5667 Sequence(矩阵快速幂+费马小定理降幂)

    题目链接:点击查看 题目大意:给出函数f(x): 现给出n,a,b,c,mod,求f(n)对mod取模后的结果 题目分析:这个题目相对于前几个题来说稍微加大了点难度,但还是挺水的一个题,首先我们可以对 ...

  3. HDU4549 M斐波那契数列 —— 斐波那契、费马小定理、矩阵快速幂

    题目链接:https://vjudge.net/problem/HDU-4549 M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others)    Memory Li ...

  4. hdu 4549 M斐波那契数列(费马小定理 + 二分快速幂 + 矩阵快速幂)

    M斐波那契数列                                                                           Time Limit: 3000/1 ...

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

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

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

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

  7. 快速幂-Jxc军训 (费马小定理+求概率)(2021-08-17)

    Jxc军训 题目 在文某路学车中学高一新生军训中,Jxc正站在太阳下站着军姿,对于这样的酷热的阳光,Jxc 表示非常不爽. Jxc将天空看做一个nn的矩阵,此时天上有m朵云,这些云会随机分布在m个不同 ...

  8. 【ACM】杭电OJ 4704 Sum (隔板原理+组合数求和公式+费马小定理+快速幂)

    http://acm.hdu.edu.cn/showproblem.php?pid=4704 1.隔板原理 1~N有N个元素,每个元素代表一个1.分成K个数,即在(N-1)个空挡里放置(K-1)块隔板 ...

  9. 51nod 1513-3的幂的和(费马小定理+快速幂)

    题目: 求:3^0 + 3^1 +...+ 3^(N) mod 1000000007 Input 输入一个数N(0 <= N <= 10^9) Output 输出:计算结果 Sample ...

  10. 牛客训练四:Applese 涂颜色(费马小定理+快速幂)

    题目链接:传送门 思路: 考虑每一列有2种颜色,总共有n行,每一行的第一个格确定颜色,由于左右颜色不相同,后面的行就确定了. 所以总共有2^n中结果. 由于n太大,所以要用到费马小定理a^n%mod= ...

最新文章

  1. LeetCode刷题记录3——237. Delete Node in a Linked List(easy)
  2. PropertiesFactoryBean PropertyPlaceholderConfigurer 区别
  3. vue component created没有触发_Vue的难点解析
  4. 中国联邦学习「五大流派」
  5. aix 查看目前java进程_问一个 AIX 的命令 ps -ef|grep java
  6. limit mongodb 聚合_MongoDB 聚合操作(转)
  7. VS C# DateTimePicker()的小技巧
  8. SAP Commerce Cloud Spartacus UI 的 ActionClass 数据结构设计
  9. 函数_方法_的四种调用方式
  10. mysql能否在手机端运行_在手机上安装linux并部署mysql,jupyter用于数据探索
  11. mysql查询数据库报错sql_mode_MySQL数据库的sql_mode
  12. Java程序员排行前10的错误,请注意!
  13. win10pe命令打开计算机,Win10是怎么进入安全模式
  14. 基于javaweb仓库管理系统简易课程报告-软件工程
  15. java后端生成echarts图片
  16. cadence导入dxf文件_PCB原创|cadence allegro导入DXF文件操作步骤
  17. 计算机桌面怎么添加便签,如何在电脑桌面上添加便签 这些知识你不一定知道...
  18. 自己定义微信图文模板注意事项整理
  19. python快递费用计算_python调用快递鸟api实现查快递
  20. 故事:坐在我隔壁的小王问我什么是HyperLogLog

热门文章

  1. 深度学习中的感受野计算
  2. uni-app 使用外部.js文件定义全局变量和全局方法
  3. 大鱼吃小鱼java程序设计
  4. 网站设计的思路是怎么样的?如何设计一个好网站?|优漫动游
  5. 固态硬盘与机械硬盘是否应该一起使用
  6. 服务器怎么使用快照还原系统,云服务器创建快照与还原
  7. 导航中的常用坐标系解析
  8. Android 清理大师产品的具体实现(一)QQ专清
  9. 【ora-12528】数据库服务器重启之后,出现ora-12528:所有适用例程都无法建立新连接
  10. 显示当前数据库服务器的ip,怎么查看服务器数据库的ip地址