题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=3122

题意:

思路:(1)x1=t则n=1;

(2)a=0,则b=t,n=2;否则无解;

(3)a=1,则有:

(4)a>=2:

  1.  
  2. i64 p,a,b,x,t;
  3.  
  4. i64 Gcd(i64 a,i64 b)
  5. {
  6. if(!b) return a;
  7. return Gcd(b,a%b);
  8. }
  9.  
  10. i64 exGcd(i64 a,i64 b,i64 &x,i64 &y)
  11. {
  12. if(b==0)
  13. {
  14. x=1; y=0;
  15. return a;
  16. }
  17. i64 temp=exGcd(b,a%b,x,y);
  18. i64 t=x;
  19. x=y;
  20. y=t-a/b*y;
  21. return temp;
  22. }
  23.  
  24. i64 deal1()
  25. {
  26. t=(t-x+p)%p;
  27. i64 X,Y;
  28. i64 k=exGcd(b,p,X,Y);
  29. if(t%k) return -1;
  30. X=X*t/k%p;
  31. if(X<0) X+=p;
  32. return X+1;
  33. }
  34.  
  35. i64 Pow(i64 a,i64 b,i64 p)
  36. {
  37. i64 ans=1;
  38. while(b)
  39. {
  40. if(b&1) ans=ans*a%p;
  41. a=a*a%p;
  42. b>>=1;
  43. }
  44. return ans;
  45. }
  46.  
  47. i64 reverse(i64 a,i64 b)
  48. {
  49. i64 x,y;
  50. exGcd(a,b,x,y);
  51. x=(x%b+b)%b;
  52. return x;
  53. }
  54.  
  55. i64 cal(i64 a,i64 b,i64 p)
  56. {
  57. i64 i;
  58. for(i=0;i<100;i++) if(Pow(a,i,p)==b) return i;
  59. map<i64,int> mp;
  60. i64 M=sqrt(1.0*p)+1;
  61. for(i=M-1;i>=0;i--) mp[Pow(a,i,p)]=i;
  62. i64 k=Pow(a,M,p),temp;
  63. for(i=0;i<=M;i++)
  64. {
  65. temp=b*reverse(Pow(k,i,p),p)%p;
  66. if(mp.count(temp)) return i*M+mp[temp];
  67. }
  68. return -1;
  69. }
  70.  
  71. i64 deal2()
  72. {
  73. i64 c=Pow(a-1,p-2,p);
  74. i64 A=(x+b*c)%p,B=(t+b*c)%p;
  75. if(A<0) A+=p;
  76. if(B<0) B+=p;
  77. i64 X,Y;
  78. i64 k=exGcd(A,p,X,Y);
  79. if(B%k) return -1;
  80. X=X*B/k%p;
  81. if(X<0) X+=p;
  82. i64 temp=cal(a,X,p);
  83. if(temp==-1) return -1;
  84. return temp+1;
  85. }
  86.  
  87. i64 cal()
  88. {
  89. if(x==t) return 1;
  90. if(a==0)
  91. {
  92. if(b==t) return 2;
  93. return -1;
  94. }
  95. if(a==1) return deal1();
  96. return deal2();
  97. }
  98.  
  99. int main()
  100. {
  101. rush()
  102. {
  103. RD(p,a,b); RD(x,t);
  104. PR(cal());
  105. }
  106. }

  

BZOJ3122 随机数生成器的更多相关文章

  1. BZOJ3122 随机数生成器——BSGS

    题意 链接 给定 $p,\ a,\ b, \ x_1$,现有一数列 $$x_{i+1} \equiv (ax_i + b) \ mod \ p$$ 求最小的 $i$ 满足 $x_i = t$ 分析 代 ...

  2. bzoj3122 [SDOI2013]随机数生成器

    bzoj3122 [SDOI2013]随机数生成器 给定一个递推式, \(X_i=(aX_{i-1}+b)\mod P\) 求满足 \(X_k=t\) 的最小整数解,无解输出 \(-1\) \(0\l ...

  3. 【BZOJ3122】随机数生成器(BSGS,数论)

    [BZOJ3122]随机数生成器(BSGS,数论) 题面 BZOJ 洛谷 题解 考虑一下递推式 发现一定可以写成一个 \(X_{i+1}=(X_1+c)*a^i-c\)的形式 直接暴力解一下 \(X_ ...

  4. 【BZOJ3122】[Sdoi2013]随机数生成器 BSGS+exgcd+特判

    [BZOJ3122][Sdoi2013]随机数生成器 Description Input 输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数.   接下来T行,每行有五个整数p,a,b, ...

  5. 【bzoj3122】: [Sdoi2013]随机数生成器 数论-BSGS

    [bzoj3122]: [Sdoi2013]随机数生成器 当a>=2 化简得 然后 BSGS 求解 其他的特判 : 当 x=t  n=1 当 a=1  当 a=0 判断b==t /* http: ...

  6. 【BZOJ-3122】随机数生成器 BSGS

    3122: [Sdoi2013]随机数生成器 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1362  Solved: 531[Submit][Sta ...

  7. 【原创】开源Math.NET基础数学类库使用(13)C#实现其他随机数生成器

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...

  8. BZOJ-2875 随机数生成器 矩阵乘法快速幂+快速乘

    题目没给全,吃X了... 2875: [Noi2012]随机数生成器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 1479 Solved: 829 ...

  9. [BZOJ3671][UOJ#6][NOI2014]随机数生成器

    [BZOJ3671][UOJ#6][NOI2014]随机数生成器 试题描述 小H最近在研究随机算法.随机算法往往需要通过调用随机数生成函数(例如Pascal中的random和C/C++中的rand)来 ...

随机推荐

  1. 【采集】php str_replace

    <?php function my_str_replace($xmlHttp,$order='asc'){ if($order=='asc'){ return str_replace(array ...

  2. 什么是Hadoop,怎样学习Hadoop

    Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS.HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上:而且它 ...

  3. SAP如何使用关于序列号的表

  4. Sponsored Feature: Common Performance Issues in Game Programming

    转自http://www.gamasutra.com/view/feature/132084/sponsored_feature_common_.php?print=1 By Becky Heinem ...

  5. 第三章DOM

    1. DOM的概念 D:Document. O:Object.对象可以分为三类, 1. 用户自定义的对象. 2. 内建对象,如Array,Math,Date. 3. 宿主对象,浏览器提供的对象.如wi ...

  6. HDU 2121 Ice_cream’s world II 不定根最小树形图

    题目链接: 题目 Ice_cream's world II Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...

  7. SQL Server 之 校对

    _CI(CS) 是否区分大小写,CI不区分,CS区分 _AI(AS) 是否区分重音,AI不区分,AS区分 _KI(KS) 是否区分假名类型,KI不区分,KS区分 _WI(WS) 是否区分宽度 WI不区 ...

  8. Kafka的消息格式

    Commit Log Kafka储存消息的文件被它叫做log,按照Kafka文档的说法是: Each partition is an ordered, immutable sequence of me ...

  9. unity调用MMBilling_2.4.2 Android SDK.

    原地址:http://www.cnblogs.com/ayanmw/p/3736284.html 项目要使用android 的移动支付SDK 应用内付费[http://dev.10086.cn/wik ...

  10. java 伪静态的方法

    1.jar包支持urlrewritefilter-4.0.3.jar  http://files.cnblogs.com/simpledev/urlrewritefilter-4.0.3.rar 2. ...