题意:

M斐波那契数列F[n]是一种整数数列,它的定义如下:

F[0] = a
F[1] = b
F[n] = F[n-1] * F[n-2] ( n > 1 )

现在给出a, b, n,你能求出F[n]的值吗?

链接:点我

这题的话,看a ,b 的指数,刚好可以使用斐波那契数列求解。
 
然后用矩阵做。
 
A^B %C   这题的C是质素,而且A,C是互质的。
所以直接A^(B%(C-1)) %C
  1. #include<cstdio>
  2. #include<iostream>
  3. #include<algorithm>
  4. #include<cstring>
  5. #include<cmath>
  6. #include<queue>
  7. #include<map>
  8. using namespace std;
  9. #define MOD 1000000007
  10. #define pb(a) push_back(a)
  11. const int INF=0x3f3f3f3f;
  12. const double eps=1e-;
  13. typedef long long ll;
  14. #define cl(a) memset(a,0,sizeof(a))
  15. #define ts printf("*****\n");
  16. const int MAXN=;
  17. int n,m,tt,cnt;
  18. struct Matrix
  19. {
  20. long long mat[][];
  21. };
  22. Matrix mul(Matrix a,Matrix b)
  23. {
  24. Matrix ret;
  25. for(int i=;i<;i++)
  26. for(int j=;j<;j++)
  27. {
  28. ret.mat[i][j]=;
  29. for(int k=;k<;k++)
  30. {
  31. ret.mat[i][j]+=a.mat[i][k]*b.mat[k][j];
  32. ret.mat[i][j]%=(MOD-);
  33. }
  34. }
  35. return ret;
  36. }
  37. Matrix pow_M(Matrix a,int n)
  38. {
  39. Matrix ret;
  40. memset(ret.mat,,sizeof(ret.mat));
  41. ret.mat[][]=ret.mat[][]=;
  42. Matrix temp=a;
  43. while(n)
  44. {
  45. if(n&)ret=mul(ret,temp);
  46. temp=mul(temp,temp);
  47. n>>=;
  48. }
  49. return ret;
  50. }
  51. long long pow_m(long long a,long long n)
  52. {
  53. long long ret=;
  54. long long temp=a%MOD;
  55. while(n)
  56. {
  57. if(n&)
  58. {
  59. ret*=temp;
  60. ret%=MOD;
  61. }
  62. temp*=temp;
  63. temp%=MOD;
  64. n>>=;
  65. }
  66. return ret;
  67. }
  68. int main()
  69. {
  70. int i,j,k;
  71. #ifndef ONLINE_JUDGE
  72. freopen("1.in","r",stdin);
  73. #endif
  74. int a,b;
  75. Matrix aa;
  76. aa.mat[][]=;
  77. aa.mat[][]=aa.mat[][]=aa.mat[][]=;
  78. while(~scanf("%d%d%d",&a,&b,&n))
  79. {
  80. Matrix bb=pow_M(aa,n);
  81. int ans=(pow_m(a,bb.mat[][])*pow_m(b,bb.mat[][]))%MOD;
  82. printf("%d\n",ans);
  83. }
  84. }

hdu 4549 矩阵快速幂的更多相关文章

  1. HDU 4549 矩阵快速幂+快速幂+欧拉函数

    M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Sub ...

  2. HDU 2855 (矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2855 题目大意:求$S(n)=\sum_{k=0}^{n}C_{n}^{k}Fibonacci(k)$ ...

  3. HDU 4471 矩阵快速幂 Homework

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4471 解题思路,矩阵快速幂····特殊点特殊处理····· 令h为计算某个数最多须知前h个数,于是写 ...

  4. HDU - 1575——矩阵快速幂问题

    HDU - 1575 题目: A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973.  Input数据的第一行是一个T,表示有T组数据. 每组数据的第一行有n( ...

  5. hdu 1757 (矩阵快速幂) 一个简单的问题 一个简单的开始

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1757 题意不难理解,当x小于10的时候,数列f(x)=x,当x大于等于10的时候f(x) = a0 * ...

  6. 随手练——HDU 5015 矩阵快速幂

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5015 看到这个限时,我就知道这题不简单~~矩阵快速幂,找递推关系 我们假设第一列为: 23 a1 a2 ...

  7. HDU 3802 矩阵快速幂 化简递推式子 加一点点二次剩余知识

    求$G(a,b,n,p) = (a^{\frac {p-1}{2}}+1)(b^{\frac{p-1}{2}}+1)[(\sqrt{a} + \sqrt{b})^{2F_n} + (\sqrt{a} ...

  8. How many ways?? HDU - 2157 矩阵快速幂

    题目描述 春天到了, HDU校园里开满了花, 姹紫嫣红, 非常美丽. 葱头是个爱花的人, 看着校花校草竞相开放, 漫步校园, 心情也变得舒畅. 为了多看看这迷人的校园, 葱头决定, 每次上课都走不同的 ...

  9. HDU 5950 矩阵快速幂

    Recursive sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

随机推荐

  1. App测试需注意

    APP测试的时候,建议让开发打好包APK和IPA安装包,测试人员自己安装应用,进行测试.在测试过程中需要注意的测试点如下: 1安装和卸载 ●应用是否可以在iOS不同系统版本或Android不同系统版本 ...

  2. 新手向-同步关键字synchronized对this、class、object、方法的区别

    synchronized的语义 实验 分析 在看源代码时遇到多线程需要同步的时候,总是会看见几种写法,修饰方法.修饰静态方法.synchronized(Xxx.class).synchronized( ...

  3. python3之线程与进程

    1.CPU运行原理 我们都知道CPU的根本任务就是执行指令,对计算机来说最终都是一串由“0”和“1”组成的序列.CPU从逻辑上可以划分成3个模块,分别是控制单元.运算单元和存储单元,这三部分由CPU内 ...

  4. java基础44 IO流技术(输出字节流/缓冲输出字节流)和异常处理

    一.输出字节流 输出字节流的体系: -------| OutputStream:所有输出字节流的基类(抽象类) ----------| FileOutputStream:向文件输出数据的输出字节流(把 ...

  5. Android studio 安装过程中遇到的问题

    之前用eclipse,想换下studio试试,安装时遇到问题,参考:http://www.cnblogs.com/csulennon/p/4178404.html

  6. dedecms调用文章列表第一篇和下面几篇不同的方法

    {dede:arclist row=1 orderby=pubdate infolen=60 limit=0,1} <li class="dot1"><img s ...

  7. Flask 对象关系

    建立一个关系 from sqlalchemy import Column, Integer, String, MetaData, ForeignKey from sqlalchemy.ext.decl ...

  8. KnockoutJs学习笔记(一)

    由于工作需要,接触到了Knockout,但是之前对于前台开发真的是不太了解,只能是摸着石头过河,边学边实践了. Knockout的官方网站是:http://knockoutjs.com/.我也是跟着官 ...

  9. 在oracle中varchar和varchar2有什么区别?

    1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节:2.VARCHAR2把空串等同于null处理,而varchar仍按 ...

  10. ssh远程执行nohup命令不退出

    https://blog.csdn.net/oneinmore/article/details/50073443