题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=2256

题目大意:

题目要求的是(sqrt(2)+sqrt(3))^2n %1024向下取整的值

解题思路:

这里很多人会直接认为结果等于(an+bn*sqrt(6))%1024,但是这种结果是错的,因为这边涉及到了double,必然会有误差,所以根double有关的取模都是错误的思路

转载于:https://blog.csdn.net/chenguolinblog/article/details/10212567

上述思路是转载的,我就是上面说的“很多人”,虽然递推矩阵写出来的,但是还是没想到可以转化成上面那样。直接输出2*a-1就是答案。这里也需要记住double取模是错误的

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int MOD = ;
  4. struct Mat
  5. {
  6. int a[][];
  7. int n, m;//n为行数,m为列数
  8. Mat(int n, int m):n(n), m(m)
  9. {
  10. memset(a, , sizeof(a));
  11. }
  12. void init()
  13. {
  14. for(int i = ; i < n; i++)a[i][i] = ;//初始化成单位矩阵
  15. }
  16. void output()
  17. {
  18. for(int i = ; i < n; i++)
  19. {
  20. for(int j = ; j < m; j++)
  21. {
  22. cout<<a[i][j]<<" ";
  23. }
  24. cout<<endl;
  25. }
  26. }
  27. };
  28. Mat mul(Mat a, Mat b)//矩阵乘法
  29. {
  30. Mat tmp(a.n, b.m);//矩阵乘法结果矩阵行数为a的行数,列数为b的列数
  31. for(int i = ; i < a.n; i++)
  32. {
  33. for(int j = ; j < b.m; j++)
  34. {
  35. for(int k = ; k < a.m; k++)//a.m == b.n(乘法的前提条件)
  36. {
  37. tmp.a[i][j] += (a.a[i][k] * b.a[k][j] % MOD);
  38. tmp.a[i][j] %= MOD;
  39. }
  40. }
  41. }
  42. return tmp;
  43. }
  44. Mat pow(Mat a, int n)
  45. {
  46. Mat tmp(a.n, a.m);
  47. tmp.init();
  48. while(n)
  49. {
  50. if(n & )tmp = mul(tmp, a);
  51. n /= ;
  52. a = mul(a, a);
  53. }
  54. return tmp;
  55. }
  56. int main()
  57. {
  58. int T, n;
  59. cin >> T;
  60. Mat a(, );
  61. a.a[][] = , a.a[][] = ;
  62. a.a[][] = , a.a[][] = ;
  63. while(T--)
  64. {
  65. cin >> n;
  66. Mat ans = pow(a, n);
  67. //ans.output();
  68. int x = ans.a[][], y = ans.a[][];
  69. cout<<( * x - ) % MOD<<endl;
  70. }
  71. }

hdu-2256 Problem of Precision---矩阵快速幂+数学技巧的更多相关文章

  1. HDU 2256 Problem of Precision (矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2256 最重要的是构建递推式,下面的图是盗来的.貌似这种叫共轭数. #include <iostr ...

  2. HDU 2256 Problem of Precision(矩阵高速幂)

    题目地址:HDU 2256 思路: (sqrt(2)+sqrt(3))^2*n=(5+2*sqrt(6))^n; 这时要注意到(5+2*sqrt(6))^n总能够表示成an+bn*sqrt(6); a ...

  3. HDU 3117 Fibonacci Numbers( 矩阵快速幂 + 数学推导 )

    链接:传送门 题意:给一个 n ,输出 Fibonacci 数列第 n 项,如果第 n 项的位数 >= 8 位则按照 前4位 + ... + 后4位的格式输出 思路: n < 40时位数不 ...

  4. HDU 2256 Problem of Precision(矩阵)

    Problem of Precision [题目链接]Problem of Precision [题目类型]矩阵 &题解: 参考:点这里 这题做的好玄啊,最后要添加一项,之后约等于,但是有do ...

  5. hdu 5667 BestCoder Round #80 矩阵快速幂

    Sequence  Accepts: 59  Submissions: 650  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65536 ...

  6. HDU 2256 Problem of Precision (矩阵快速幂)(推算)

    Problem of Precision Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  7. HDU 2256 Problem of Precision 数论矩阵快速幂

    题目要求求出(√2+√3)2n的整数部分再mod 1024. (√2+√3)2n=(5+2√6)n 如果直接计算,用double存值,当n很大的时候,精度损失会变大,无法得到想要的结果. 我们发现(5 ...

  8. HDU 2256 Problem of Precision( 矩阵快速幂 )

    链接:传送门 题意:求式子的值,并向下取整 思路: 然后使用矩阵快速幂进行求解 balabala:这道题主要是怎么将目标公式进行化简,化简到一个可以使用现有知识进行解决的一个过程!菜的扣脚...... ...

  9. HDU 2256Problem of Precision(矩阵快速幂)

    题意 求$(\sqrt{2} + \sqrt{3})^{2n} \pmod {1024}$ $n \leqslant 10^9$ Sol 看到题解的第一感受:这玩意儿也能矩阵快速幂??? 是的,它能q ...

随机推荐

  1. 解决Navicat 连接服务器数据库报10060问题

    1.登录mysql,授予远程登录权限(确保mysql表里的登录user对应的host为 % 即可:若不是 % ,使用mysql的update更新对应host) mysql> use mysql; ...

  2. SAS笔记(2) RETAIN语句

    本文重点: 使用RETIAN,INPUT在每次循环执行时保留上一次PDV中的变量值. SUM语句和SET语句会自动RETAIN变量. 1. RETAIN语句 1.1 Example 1 先来看看在DA ...

  3. Unity3D -- shader常用函数和变量

    最近在学习Unity Shader,写Shader的时候总是忘记Unity为我们提供的函数.变量怎么写的,这里整理一下,方便自己查阅,也提供给网友,学习Shader不易. 1.函数 float3 Wo ...

  4. SQL数据库操作整理

    1.规范 ①关键字与函数名称全部大写: ②数据库名称.表名称.字段名称全部小写: ③SQL语句必须以分号结尾. 2.数据库操作 // 1. 创建数据库,其中[]表示可以省略 CREATE { DATA ...

  5. 20个问题(状压dp)

    20个问题(状压dp) 有n(<=128)个物体,m(<=11)个特征.每个物体用一个m位01串表示,表示每个特征是具备还是不具备.我在心里想一个物体,由你来猜.你每次可以询问一个特征,然 ...

  6. 洛谷P3043 [USACO12JAN]牛联盟Bovine Alliance

    P3043 [USACO12JAN]牛联盟Bovine Alliance 题目描述 Bessie and her bovine pals from nearby farms have finally ...

  7. jmeter-提取器之JSON Path PostProcessor

    后置处理器添加 json path postprocessor. 用处: 当前接口响应返回的json中提取内容,作为变量可以在不同的请求中传递. 1. json path postprocessor ...

  8. chromedriver对应chrom版本

    chromedriver版本 支持的Chrome版本 v2.37 v64-66 v2.36 v63-65 v2.35 v62-64 v2.34 v61-63 v2.33 v60-62 v2.32 v5 ...

  9. 洛谷P2746 校园网Network of Schools

    题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作"接受学校").注意即使 \(B\) 在 \(A\) 学校的分发列表中, \(A ...

  10. Hexo瞎折腾系列(9) - 网页标题崩溃特效

    前言 本系列的所有修改均基于本系列第一篇中的新增文件(譬如custom.js),请先自行阅读Hexo瞎折腾系列(1) - 准备工作与简单美化:并按照文章所说自行修改代码或文件. 为网页添加标题崩溃特效 ...