1281 Xn数列

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 大师 Master
 
 
 
题目描述 Description

给你6个数,m, a, c, x0, n, g

Xn+1 = ( aXn + c ) mod m,求Xn

m, a, c, x0, n, g<=10^18

输入描述 Input Description

一行六个数 m, a, c, x0, n, g

输出描述 Output Description

输出一个数 Xn mod g

样例输入 Sample Input

11 8 7 1 5 3

样例输出 Sample Output

2

数据范围及提示 Data Size & Hint

int64按位相乘可以不要用高精度。

题解:

1.俄罗斯农夫算法。

2.矩阵 {(a,0)(1,1)},{Xn,c}

3.要用快速幂。

代码:

  1. #include<cstdio>
  2. #include<iostream>
  3. #define ll long long
  4.  
  5. using namespace std;
  6.  
  7. long long m,a,c,x0,n,g;
  8. long long x[][],b[][],f[][];
  9.  
  10. long long mull(long long a,long long b,long long m)
  11. {
  12. long long ans=;
  13. while (b)
  14. {
  15. if (b&) ans=(a+ans)%m;
  16. b>>=;
  17. a=(a<<)%m;
  18. }
  19. return ans;
  20. }
  21.  
  22. int mull1 (long long a[][],long long b[][],long long ans[][])
  23. {
  24. long long c[][];
  25. for (int i=;i<;i++)
  26. for (int j=;j<;j++)
  27. {
  28. c[i][j]=;
  29. for (int k=;k<;k++)
  30. c[i][j]=(c[i][j]+mull(a[i][k],b[k][j],m))%m;
  31. }
  32. for (int i=;i<;i++)
  33. for (int j=;j<;j++)
  34. ans[i][j]=c[i][j];
  35. }
  36.  
  37. int mull2 (long long a[][],long long b[][],long long ans[][])
  38. {
  39. long long c[][];
  40. for (int i=;i<;i++)
  41. for (int j=;j<;j++)
  42. {
  43. c[i][j]=;
  44. for (int k=;k<;k++)
  45. c[i][j]=(c[i][j]+mull(a[i][k],b[k][j],m))%m;
  46. }
  47. for (int i=;i<;i++)
  48. ans[][i]=c[][i];
  49. }
  50.  
  51. int main()
  52. {
  53. scanf("%lld%lld%lld%lld%lld%lld",&m,&a,&c,&x0,&n,&g);
  54. x[][]=a;
  55. x[][]=x[][]=;
  56. b[][]=b[][]=;
  57. f[][]=x0;f[][]=c;
  58. while (n)
  59. {
  60. if (n&) mull1(x,b,b);
  61. mull1(x,x,x);
  62. n>>=;
  63. }
  64. mull2(f,b,f);
  65. printf("%lld\n",f[][]%g);
  66. return ;
  67. }

C++之路进阶——codevs1281(Xn数列)的更多相关文章

  1. codevs1281 Xn数列

    题目描述 Description 给你6个数,m, a, c, x0, n, g Xn+1 = ( aXn + c ) mod m,求Xn m, a, c, x0, n, g<=10^18 输入 ...

  2. CODEVS1281 Xn数列 (矩阵乘法+快速乘)

    真是道坑题,数据范围如此大. 首先构造矩阵 [ f[0] , 1] * [ a,0 ] ^n= [ f[n],1 ] [ c,1 ] 注意到m, a, c, x0, n, g<=10^18,所以 ...

  3. Codevs No.1281 Xn数列

    2016-06-01 16:28:25 题目链接: Xn数列 (Codevs No.1281) 题目大意: 给定一种递推式为 Xn=(A*Xn-1+C)%M 的数列,求特定的某一项%G 解法: 矩阵乘 ...

  4. [WikiOI "天梯"1281] Xn数列

    题目描述Description 给你6个数,m, a, c, x0, n, g Xn+1 = ( aXn + c ) mod m,求Xn m, a, c, x0, n, g<=10^18 输入描 ...

  5. C++之路进阶codevs1269(匈牙利游戏)

    1269 匈牙利游戏 2012年CCC加拿大高中生信息学奥赛  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description ...

  6. codevs 1281 Xn数列

    题目描述 Description 给你6个数,m, a, c, x0, n, g Xn+1 = ( aXn + c ) mod m,求Xn m, a, c, x0, n, g<=10^18 输入 ...

  7. Xn数列(codevs 1281)

    题目描述 Description 给你6个数,m, a, c, x0, n, g Xn+1 = ( aXn + c ) mod m,求Xn m, a, c, x0, n, g<=10^18 输入 ...

  8. C++之路进阶——codevs2492(上帝造题的七分钟 2)

    2492 上帝造题的七分钟 2  时间限制: 1 s  空间限制: 64000 KB  题目等级 : 大师 Master    题目描述 Description XLk觉得<上帝造题的七分钟&g ...

  9. 【wikioi】1281 Xn数列(矩阵乘法)

    http://wikioi.com/problem/1281/ 矩阵真是个神奇的东西.. 只要搞出一个矩阵乘法,那么递推式可以完美的用上快速幂,然后使复杂度降到log 真是神奇. 在本题中,应该很快能 ...

随机推荐

  1. ArcGIS Engine中的数据访问

    ArcGIS Engine中的数据访问 数据是GIS的基础, 访问数据也是进行任何复杂的空间分析及空间可视化表达的前提.ArcGIS支持的数据格式比较丰富,对不同的数据格式支持的程度也有很大差异.本文 ...

  2. 浅谈java性能分析

    浅谈java性能分析,效能分析 在老师强烈的要求下做了效能分析,对上次写过的词频统计的程序进行分析以及改进. 对于效能分析:我个人很浅显的认为就是程序的运行效率,代码的执行效率等等. java做性能测 ...

  3. win2003远程桌面端口修改

    win2003远程桌面端口修改   1.改端口:简单操作步骤:打开"开始→运行",输入"regedit",打开注册表,进入以下路径:[HKEY_LOCAL_MA ...

  4. Android课程---Activity 的生命周期

    activity类处于android.app包中,继承体系如下: 1.java.lang.Object 2.android.content.Context 3.android.app.Applicat ...

  5. Windows内核 语言选择注意点

    调用约定: 调用约定指的是函数被调用时,会按照不同规则,翻译成不同的汇编代码.当一个函数被调用时,首先会将返回地址压入堆栈,紧接着会将函数的参数依次压入堆栈.不同的调用约定,会指明不同的参数入栈顺序, ...

  6. Python的时间模块小结(转自:不懂真人)

    import datetimeprint time.time() #时间戳 print time.localtime(time.time()) #时间元组 print time.strftime('% ...

  7. Final-阶段站立会议5

    组名:天天向上 组长:王森 组员:张政.张金生.林莉.胡丽娜 代码地址:HTTPS:https://git.coding.net/jx8zjs/llk.git SSH:git@git.coding.n ...

  8. wordpress 导航相关的函数

    上一篇文章.下一篇文章 previous_post_link( $format = '« %link', $link = '%title', $in_same_term = false, $exclu ...

  9. JSON和JS对象之间的互转(转)

    文章出处:http://www.cnblogs.com/dyllove98/p/4235909.html 1. jQuery插件支持的转换方式 $.parseJSON( jsonstr ); //jQ ...

  10. ant copy file

    <project name="selftask" default="docopy" basedir="."> <descr ...