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

只有50个询问,50个操作逆推回去即可,注意mul每次要*2%(modo
- 1)因为是指数!

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <string>
  6. #include <queue>
  7. #include <set>
  8. #include <iostream>
  9. #include <algorithm>
  10. using namespace std;
  11. #define RD(x) scanf("%d",&x)
  12. #define RD2(x,y) scanf("%d%d",&x,&y)
  13. #define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
  14. #define clr0(x) memset(x,0,sizeof(x))
  15. typedef long long LL;
  16.  
  17. int n,m;
  18. const double pi = acos ( -1.0 ) ;
  19. const LL modo = 1000000007;
  20. int op[100005],op_n;
  21. LL ans[55];
  22. int ans_n;
  23. LL quick_pow(LL a,int b)
  24. {
  25. LL c = 1;
  26. while(b){
  27. if(b&1)
  28. c = (c*a)%modo;
  29. b>>=1;
  30. a = (a*a)%modo;
  31. }
  32. return c;
  33. }
  34. LL gao(LL x)
  35. {
  36. int mul = 1;
  37. for(int i = op_n - 1;i >= 0;--i){
  38. if(op[i] == 1){
  39. // 1,3,5->1,2,3
  40. // 2,4,6->4,5,6
  41.  
  42. // 1,3,5,7->1,2,3,4
  43. // 2,4,6->5,6,7
  44. if(x <= (n+1)/2)
  45. x = x*2 - 1;
  46. else
  47. x = (x - (n+1)/2)<<1;
  48. }
  49. else if(op[i] == 2){
  50. x = n + 1 - x;
  51. }
  52. else{
  53. mul = (mul*2)%(modo-1);
  54. }
  55. }
  56. return quick_pow(x,mul);
  57. }
  58. void work()
  59. {
  60. op_n = ans_n = 0;
  61. LL x;
  62. char q[2];
  63. while(m--){
  64. scanf("%s%I64d",q,&x);
  65. if(q[0] == 'O'){
  66. op[op_n++] = (int)x;
  67. }else{
  68. ans[ans_n++] = gao(x);
  69. }
  70. }
  71. for(int i = 0;i < ans_n;++i)
  72. printf("%I64d\n",ans[i]);
  73. return;
  74. }
  75. int main () {
  76. int T;
  77. RD(T);
  78. while(T--){
  79. RD2(n,m);
  80. work();
  81. }
  82. return 0 ;
  83. }

hdu 5063 操作逆推+mul每次要*2%(modo - 1)的更多相关文章

  1. HDU 5844 LCM Walk(数学逆推)

    http://acm.hdu.edu.cn/showproblem.php?pid=5584 题意: 现在有坐标(x,y),设它们的最小公倍数为k,接下来可以移动到(x+k,y)或者(x,y+k).现 ...

  2. hdu 3853 LOOPS (概率dp 逆推求期望)

    题目链接 LOOPS Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others)Tota ...

  3. HDU 1176-免费馅饼(DP_逆推)

    免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  4. HDU 5063 Operation the Sequence(仔细审题)

    http://acm.hdu.edu.cn/showproblem.php?pid=5063 题目大意: 题目意思还是比较简单.所以就不多少了.注意这句话,对解题有帮助. Type4: Q i que ...

  5. HDU 5063 Operation the Sequence(暴力)

    HDU 5063 Operation the Sequence 题目链接 把操作存下来.因为仅仅有50个操作,所以每次把操作逆回去执行一遍,就能求出在原来的数列中的位置.输出就可以 代码: #incl ...

  6. HDU 5063 Operation the Sequence(暴力 数学)

    题目链接:pid=5063" target="_blank">http://acm.hdu.edu.cn/showproblem.php?pid=5063 Prob ...

  7. Codeforces Round #499 (Div. 2) C.FLY 数学推导_逆推

    本题应该是可以使用实数二分的,不过笔者一直未调出来,而且发现了一种更为优美的解法,那就是逆推. 首先,不难猜到在最优解中当飞船回到 111 号节点时油量一定为 000, 这就意味着减少的油量等于减少之 ...

  8. Natas11 Writeup(常见编码、异或逆推、修改cookie)

    Natas11: 页面提示cookie被异或加密保护,查看源码,发现了一个预定义参数和三个函数. //预定义参数,猜测将showpassword设置为yes即可得到密码. $defaultdata = ...

  9. UVA116Unidirectional TSP(DP+逆推)

    http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18206 题意:M*N的数阵,从左边一列到右边一列走过的数的和的最小.并输出路 ...

随机推荐

  1. Tomcat数据库连接池配置

    Tomcat数据库连接池配置 1.            Server.xml的配置 (1)找到tomcat所在目录下的conf\server.xml文件 (2)在文件最后一个</host> ...

  2. keras、 tensor flow 教程

    [keras]http://keras-cn.readthedocs.io/en/latest/getting_started/concepts/,[tensorflow] http://blog.c ...

  3. Retrofit2+Rxjava2 okhttp RxBus 使用记录

    学习 博客 http://blog.csdn.net/r17171709/article/details/51149350 @Query 后面跟要添加的字段 @Path 连接url里面{userId} ...

  4. LocalDateTime json格式化

    参考https://www.cnblogs.com/xiaozhang9/p/jackson.html?utm_source=itdadao&utm_medium=referral <d ...

  5. PIE结对项目编程

    一.题目描述 构造程序并测试,分别是:     1.不能触发Fault.     2.触发Fault,但是不能触发Error.     3.触发Error,但是不能产生Failure. 二.结对对象 ...

  6. MVVM 的理解

    MVVM 是 Model - View - ViewModel 的缩写 可以看到他和之前的MVC很像,的确有人称之为一个加强优化版的MVC. 是一种模块化开发代码分层的思想或者框架! MVVM 的优点 ...

  7. sqlite小知识

    删除数据时,由于缓存关系,数据了文件大小不会一下子减小,可以通过执行vacuum;或新建表时使用自动整理大小来实现. sqlite的大小理论上可以达到140T. 暂时,使用C的api,只能使用不是.开 ...

  8. 765A Neverending competitions

    A. Neverending competitions time limit per test 2 seconds memory limit per test 512 megabytes input ...

  9. mongodb的安装配置方法

    安装方法: https://docs.mongodb.com/manual/tutorial/install-mongodb-enterprise-on-red-hat/ 使用向导: https:// ...

  10. ANT发送邮件需要的3个JAR包

    ANT发送邮件需要的3个JAR包:activation.jar.mail.jar.commons-email-1.2.jar 将这三个jar包放到 $ANT_HOME/LIB 路径下即可 内网发送邮件 ...