Sequence (矩阵快速幂+快速幂+费马小定理)
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 (矩阵快速幂+快速幂+费马小定理)相关推荐
- HDU4549 M斐波那契数列(矩阵快速幂+费马小定理)
Problem Description M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) ...
- HDU - 5667 Sequence(矩阵快速幂+费马小定理降幂)
题目链接:点击查看 题目大意:给出函数f(x): 现给出n,a,b,c,mod,求f(n)对mod取模后的结果 题目分析:这个题目相对于前几个题来说稍微加大了点难度,但还是挺水的一个题,首先我们可以对 ...
- HDU4549 M斐波那契数列 —— 斐波那契、费马小定理、矩阵快速幂
题目链接:https://vjudge.net/problem/HDU-4549 M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Li ...
- hdu 4549 M斐波那契数列(费马小定理 + 二分快速幂 + 矩阵快速幂)
M斐波那契数列 Time Limit: 3000/1 ...
- HDU 4549 M斐波那契数列(矩阵快速幂费马小定理)
ps:今天和战友聊到矩阵快速幂,想到前几天学长推荐去刷矩阵专题,挑了其中唯一一道中文题,没想到越过山却被河挡住去路... 题目链接:[kuangbin带你飞]专题十九 矩阵 R - M斐波那契数列 T ...
- 洛谷 [P1593 因子和] {快速幂+费马小定理求逆元+求解质因子} 奋斗的珂珂~
题目描述 输入两个整数 a 和 b,求 aba^bab 的因子和. 由于结果太大,只要输出它对 9901 取模的结果. 输入格式 仅一行,为两个整数 a和 b. 输出格式 输出一行一个整数表示答案对 ...
- 快速幂-Jxc军训 (费马小定理+求概率)(2021-08-17)
Jxc军训 题目 在文某路学车中学高一新生军训中,Jxc正站在太阳下站着军姿,对于这样的酷热的阳光,Jxc 表示非常不爽. Jxc将天空看做一个nn的矩阵,此时天上有m朵云,这些云会随机分布在m个不同 ...
- 【ACM】杭电OJ 4704 Sum (隔板原理+组合数求和公式+费马小定理+快速幂)
http://acm.hdu.edu.cn/showproblem.php?pid=4704 1.隔板原理 1~N有N个元素,每个元素代表一个1.分成K个数,即在(N-1)个空挡里放置(K-1)块隔板 ...
- 51nod 1513-3的幂的和(费马小定理+快速幂)
题目: 求:3^0 + 3^1 +...+ 3^(N) mod 1000000007 Input 输入一个数N(0 <= N <= 10^9) Output 输出:计算结果 Sample ...
- 牛客训练四:Applese 涂颜色(费马小定理+快速幂)
题目链接:传送门 思路: 考虑每一列有2种颜色,总共有n行,每一行的第一个格确定颜色,由于左右颜色不相同,后面的行就确定了. 所以总共有2^n中结果. 由于n太大,所以要用到费马小定理a^n%mod= ...
最新文章
- LeetCode刷题记录3——237. Delete Node in a Linked List(easy)
- PropertiesFactoryBean PropertyPlaceholderConfigurer 区别
- vue component created没有触发_Vue的难点解析
- 中国联邦学习「五大流派」
- aix 查看目前java进程_问一个 AIX 的命令 ps -ef|grep java
- limit mongodb 聚合_MongoDB 聚合操作(转)
- VS C# DateTimePicker()的小技巧
- SAP Commerce Cloud Spartacus UI 的 ActionClass 数据结构设计
- 函数_方法_的四种调用方式
- mysql能否在手机端运行_在手机上安装linux并部署mysql,jupyter用于数据探索
- mysql查询数据库报错sql_mode_MySQL数据库的sql_mode
- Java程序员排行前10的错误,请注意!
- win10pe命令打开计算机,Win10是怎么进入安全模式
- 基于javaweb仓库管理系统简易课程报告-软件工程
- java后端生成echarts图片
- cadence导入dxf文件_PCB原创|cadence allegro导入DXF文件操作步骤
- 计算机桌面怎么添加便签,如何在电脑桌面上添加便签 这些知识你不一定知道...
- 自己定义微信图文模板注意事项整理
- python快递费用计算_python调用快递鸟api实现查快递
- 故事:坐在我隔壁的小王问我什么是HyperLogLog