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

题意:m个数字全为x mod k ?= c;其中m <= 1010,0 < c,k <= 10,000;

法1:xxx = (10m-1)/9*x;但是n太大,需要同时mod。去除分母将式子变为:10m*x%(9k) - x%(9k) =? 9c ;其中 10m 快速二次幂即可;

时间复杂度为O(logn)

法2: 由于m个x数的产生对于mod具有可拆分性,所以直接求解周期即可;

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define rep0(i,l,r) for(int i = (l);i < (r);i++)
  4. #define rep1(i,l,r) for(int i = (l);i <= (r);i++)
  5. #define rep_0(i,r,l) for(int i = (r);i > (l);i--)
  6. #define rep_1(i,r,l) for(int i = (r);i >= (l);i--)
  7. #define MS0(a) memset(a,0,sizeof(a))
  8. #define MS1(a) memset(a,-1,sizeof(a))
  9. #define MSi(a) memset(a,0x3f,sizeof(a))
  10. #define inf 0x3f3f3f3f
  11. #define lson l, m, rt << 1
  12. #define rson m+1, r, rt << 1|1
  13. typedef pair<int,int> PII;
  14. #define A first
  15. #define B second
  16. #define MK make_pair
  17. typedef long long ll;
  18. typedef unsigned int uint;
  19. template<typename T>
  20. void read1(T &m)
  21. {
  22. T x=,f=;char ch=getchar();
  23. while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
  24. while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
  25. m = x*f;
  26. }
  27. template<typename T>
  28. void read2(T &a,T &b){read1(a);read1(b);}
  29. template<typename T>
  30. void read3(T &a,T &b,T &c){read1(a);read1(b);read1(c);}
  31. template<typename T>
  32. void out(T a)
  33. {
  34. if(a>) out(a/);
  35. putchar(a%+'');
  36. }
  37. const int maxn = 1e4+;
  38. int mp[maxn], rk[maxn];
  39. int main()
  40. {
  41. //freopen("data.txt","r",stdin);
  42. //freopen("out.txt","w",stdout);
  43. int T, kase = ;
  44. scanf("%d",&T);
  45. while(T--){
  46. MS1(mp);
  47. ll x, m, k, c, circle = -, aux = , start;
  48. read2(x,m); read2(k,c);
  49. rep1(i,,m){
  50. aux = (aux*+x)%k;
  51. rk[i] = aux;
  52. if(mp[rk[i]] != -){
  53. circle = i - mp[rk[i]];
  54. start = mp[rk[i]];
  55. break;
  56. }
  57. mp[rk[i]] = i;
  58. }
  59. //printf("\n%lld %lld\n\n",start,circle);
  60. printf("Case #%d:\n",kase++);
  61. if(circle == -)    
  62. puts(aux == c?"Yes":"No");
  63. else{
  64. int ans = rk[(m - start)%circle + start];
  65. puts(ans == c?"Yes":"No");
  66. }
  67. }
  68. return ;
  69. }

hdu 5690 2016"百度之星" - 初赛(Astar Round2A) All X 快速二次幂 || 寻找周期的更多相关文章

  1. 2016百度之星-初赛(Astar Round2A)AII X

    Problem Description F(x,m) 代表一个全是由数字x组成的m位数字.请计算,以下式子是否成立: F(x,m) mod k ≡ c Input 第一行一个整数T,表示T组数据. 每 ...

  2. 2016"百度之星" - 初赛(Astar Round2B) 1006 中位数计数

    思路:统计当前数左边比它小|大 i个人,相应右边就应该是比它大|小i个人 l数组表示左边i个人的方案 r表示右边i个人的方案 数组下标不可能是负数所以要加n //#pragma comment(lin ...

  3. HDU 5690:2016"百度之星" - 初赛 All X

    原文链接:https://www.dreamwings.cn/hdu5690/2657.html All X Time Limit: 2000/1000 MS (Java/Others)    Mem ...

  4. 2016"百度之星" - 初赛(Astar Round2A)HDU 5695 拓扑排序+优先队列

    Gym Class Time Limit: 6000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  5. 2016百度之星 初赛2A ABEF

    只做了1001 1002 1005 1006.剩下2题可能以后补? http://acm.hdu.edu.cn/search.php?field=problem&key=2016%22%B0% ...

  6. 2016"百度之星" - 初赛(Astar Round2A)--HDU 5690 |数学转化+快速幂

    Sample Input 3 1 3 5 2 1 3 5 1 3 5 99 69   Sample Output Case #1: No Case #2: Yes Case #3: Yes Hint ...

  7. 2016"百度之星" - 初赛(Astar Round2A)1002 / HDU 5691 状态压缩DP

    Sitting in Line Problem Description   度度熊是他同时代中最伟大的数学家,一切数字都要听命于他.现在,又到了度度熊和他的数字仆人们玩排排坐游戏的时候了.游戏的规则十 ...

  8. 2016"百度之星" - 初赛(Astar Round2A)

    题目链接: http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=701 1001 : 矩阵快速幂 #include <iostre ...

  9. 杭电acm5698-瞬间移动(2016"百度之星" - 初赛(Astar Round2B))

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5698 Problem Description 有一个无限大的矩形,初始时你在左上角(即第一行第一列), ...

随机推荐

  1. UITextField的简单操作和实际应用

    UITestField UITestField* testField = [UITestField alloc]initWithFrame]; /* 设置边框样式 typedef NS_ENUM(NS ...

  2. ARC 和 MRC 小结

    ARC 和 MRC 内存管理 从 MRC—>ARC 就是将内存管理部分,从开发者的函数中转移到函数外部的runtime 中.由于 runtime 的开发简单,逻辑层次高,所以 runtime 的 ...

  3. iOS UITableView的一些方法

    项目中用到的一些tabview 问题及对应方法: 一.tableview 1.下划线左对齐 //步骤一:(加在 viewdidload方法中) if([tabView respondsToSelect ...

  4. linux_机器信息查询

    查看系统版本:[root@css-management ~]# lsb_release -aLSB Version: :core-4.0-amd64:core-4.0-noarch:graphics- ...

  5. C++构造/析构/赋值函数

    在编写C++程序的时候,我们会为特定某一类对象申明类类型,几乎我们申明的每一个class都会有一个或多个构造函数.一个析构函数.一个赋值运算符重载=.以及拷贝构造函数.这些函数控制着类对象的基础操作, ...

  6. 以NameValueCollection 修改URL中的查询参数

    以NameValueCollection 修改URL中的查询参数 本文参考于:http://www.c-sharpcorner.com/Blogs/9421/add-remove-or-modify- ...

  7. Speex回声消除代码分析

    先说明下,这里的代码流程是修改过的Speex流程,但与Speex代码差异不大,应该不影响阅读.   (1)用RemoveDCoffset函数进行去直流 (2)远端信号预加重后放入x[i+frame_s ...

  8. [__NSCFNumber length]: unrecognized selector sent to instance 0x8b3c310

    出现这种问题一般是你把int类型的数值赋给了NSString. 比如: 你定义了一个NSString类型的属性sex,但是服务端返回的sex字段实际上是NSNumber类型, 你直接把NSNumber ...

  9. 编译项目报错: Ignoring file / xxx , missing required architecture i386 in file / xxx (2 slices)

    .lib 或者 .a需用于真机版本,也就是ARM7的,如果你编译的是模拟器就会出现这个错误: 选择真机调试即可 .

  10. Android文字转语音

    虽然视觉上的反馈通常是给用户提供信息最快的方式,但这要求用户把注意力设备上.当用户不能查看设备时,则需要一些其他通信的方法.Android提供了强大的文字转语音Text-to-Speech,TTS A ...