题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4565

这个博客讲的比较好:http://blog.csdn.net/ljd4305/article/details/8987823

题意:给定a,b,,n,m,求Sn

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5. #include<cmath>
  6. #include<sstream>
  7. #include<string>
  8. using namespace std;
  9. __int64 b,k,n,mod;
  10. struct matrix
  11. {
  12. __int64 m[][];
  13. };
  14. matrix a,per,s,ans;
  15. void init()//初始化操作
  16. {
  17.  
  18. s.m[][]=((*((k%mod)*(k%mod))%mod)%mod+(*b)%mod)%mod;
  19. s.m[][]=(*(k%mod))%mod;
  20. s.m[][]=;
  21. s.m[][]=;
  22.  
  23. a.m[][]=(*(k%mod))%mod;
  24. a.m[][]=;
  25. a.m[][]=(((b%mod)-((k%mod)*(k%mod))%mod)+mod)%mod;
  26. a.m[][]=;
  27. }
  28. matrix mul(matrix x,matrix y)
  29. {
  30. matrix temp;
  31. memset(temp.m,,sizeof(temp.m));
  32. for(int i=;i<;i++)
  33. for(int j=;j<;j++)
  34. for(int k=;k<;k++)
  35. temp.m[i][j]=(temp.m[i][j]+x.m[i][k]*y.m[k][j])%mod;
  36. return temp;
  37. }
  38. matrix mpow(matrix A,__int64 n)
  39. {
  40. matrix B;
  41. memset(B.m,,sizeof(B.m));
  42. for(int i=;i<;i++)
  43. B.m[i][i]=;
  44. while(n>)
  45. {
  46. if(n&)
  47. B=mul(B,A);
  48. A=mul(A,A);
  49. n>>=;
  50. }
  51. return B;
  52. }
  53. int main()
  54. {
  55.  
  56. while(~scanf("%I64d%I64d%I64d%I64d",&k,&b,&n,&mod))
  57. {
  58. init();
  59. if(n==)
  60. {
  61. cout<<(*(k%mod))%mod<<endl;
  62. continue;
  63. }
  64. else if(n==)
  65. {
  66. cout<<((*(k%mod)*(k%mod))%mod+(*(b%mod))%mod)%mod<<endl;
  67. continue;
  68. }
  69. else
  70. {
  71. ans=mpow(a,n-);
  72. ans=mul(s,ans);
  73. cout<<ans.m[][]<<endl;
  74. }
  75. }
  76. return ;
  77. }

(转载)HDU4565的更多相关文章

  1. Crystal Clear Applied: The Seven Properties of Running an Agile Project (转载)

    作者Alistair Cockburn, Crystal Clear的7个成功要素,写得挺好. 敏捷方法的关注点,大家可以参考,太激动所以转载了. 原文:http://www.informit.com ...

  2. RTP与RTCP协议介绍(转载)

    RTSP发起/终结流媒体.RTP传输流媒体数据 .RTCP对RTP进行控制,同步.RTP中没有连接的概念,本身并不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由RTCP来负责完 ...

  3. 《Walking the callstack(转载)》

    本文转载自:https://www.codeproject.com/articles/11132/walking-the-callstack Download demo project with so ...

  4. [转载]MVVM模式原理分析及实践

    没有找到很好的MVVM模式介绍文章,简单找了一篇,分享一下.MVVM实现了UI\UE设计师(Expression Blend 4设计界面)和软件工程师的合理分工,在SilverLight.WPF.Wi ...

  5. [转载]:STM32为什么必须先配置时钟再配置GPIO

    转载来源 :http://blog.csdn.net/fushiqianxun/article/details/7926442 [原创]:我来添两句,就是很多同学(包括我)之前搞低端单片机,到了stm ...

  6. [转载]从MyEclipse到IntelliJ IDEA-让你摆脱鼠标,全键盘操作

    从MyEclipse转战到IntelliJ IDEA的经历 注转载址:http://blog.csdn.net/luoweifu/article/details/13985835 我一个朋友写了一篇“ ...

  7. TCP同步与异步,长连接与短连接【转载】

    原文地址:TCP同步与异步,长连接与短连接作者:1984346023 [转载说明:http://zjj1211.blog.51cto.com/1812544/373896   这是今天看到的一篇讲到T ...

  8. 在CentOS 7/6.5/6.4 中安装Java JDK 8(转载)

    转载在CentOS 7/6.5/6.4 中安装Java JDK 8 首先,在你的服务器上运行一下更新. yum update 然后,在您的系统上搜索,任何版本的已安装的JDK组件. rpm -qa | ...

  9. 用C#实现MD5的加密(转载)

    方法一 首先,先简单介绍一下MD5 MD5的全称是message-digest algorithm 5(信息-摘要算法,在90年代初由mit laboratory for computer scien ...

随机推荐

  1. (DP)Best Time to Buy and Sell Stock

    题目: Say you have an array for which the ith element is the price of a given stock on day i. If you w ...

  2. JS获取按下的键盘字符

    <html> <head> KeyPress Test!<hr> <script language="javascript"> fu ...

  3. {}+[] = ? 和 []+{} = ? 浅谈JS数据类型转换

    参加公司技术嘉年华第一季(前端.服务端)的间隙,陈导问了我一个问题:{}+[] 和 []+{}两个表达式的值分别是什么?根据我的理解我觉得结果应该都是"[object Object]&quo ...

  4. 编码规范(CSS)

    code { font-family: "PT Mono", Menlo, "Courier New", monospace; padding: 2px 4px ...

  5. Visual Studio 2015 使用ODP.net进行EF开发

    刚转了新公司,以前公司都是用VS+MSSQL作为开发工具的 现在新公司由于数据库是Oracle,而且新公司比较小规模,开发团队也没有什么规范 访问数据库的方式一直使用ADO.net的DataTable ...

  6. 《Swift开发指南》国内第一本Swift图书上市了

    <Swift开发指南>国内第一本Swift图书上市了 既<courseId=799262">苹果Swift编程语言开发指南>视频教程地址:courseId=79 ...

  7. 分析NTFS文件系统得到特定文件的内容

    找某一个文件的内容(如要读取文件D:\dir\dir2\text.txt,详细过程例如以下: (1)读取分区表/分区链表信息,找到磁盘F的起始扇区. (2)读取D盘的第一个扇区(分区的BOOTSETO ...

  8. 一个用 Cumulative Penalty 培训 L1 正规 Log-linear 型号随机梯度下降

      Log-Linear 模型(也叫做最大熵模型)是 NLP 领域中使用最为广泛的模型之中的一个.其训练常採用最大似然准则.且为防止过拟合,往往在目标函数中增加(能够产生稀疏性的) L1 正则.但对于 ...

  9. Js 实现 C# Format方法

    参考网友的, 挺好用的: String.prototype.format = function (args) { if (arguments.length > 0) { var result = ...

  10. 创建一个简单的配置android编译环境的脚本

    由于有多个Android项目,每个项目配置编译环境时选项都不同,所以尝试写一个sh脚本来完成这个功能.     首先进入bin文件夹,新建一个文件enbuild $ cd ~/bin $ touch ...