发现是一个快速幂,然而过不去。

怎么办呢?

1.十进制快速幂,可以用来练习卡时。

2.费马小定理,如果需要乘方的地方,可以先%(p-1)再计算,其他地方需要%p,所以需要保存两个数。

然后就是分类讨论a是否为1(等比数列求和时要求a不为1)

然后就是递推了。

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <iostream>
  4. #include <algorithm>
  5. using namespace std;
  6.  
  7. #define F(i,j,k) for (ll i=j;i<=k;++i)
  8. #define D(i,j,k) for (ll i=j;i>=k;--i)
  9. #define ll long long
  10. const ll md=1000000007;
  11. ll n1,m1,n2,m2,a,b,c,d,len,ans;
  12. char s1[1000005],s2[1000005];
  13. ll qpow(ll a,ll b)
  14. {
  15. ll ret=1;
  16. while (b)
  17. {
  18. if (b&1) (ret*=a)%=md;
  19. (a*=a)%=md;
  20. b>>=1;
  21. }
  22. return ret;
  23. }
  24. ll inv(ll a)
  25. {return qpow(a,md-2);}
  26. int main()
  27. {
  28. scanf("%s",s1+1);
  29. scanf("%s",s2+1);
  30. len=strlen(s1+1); F(i,1,len) n1=(n1*10+s1[i]-'0')%(md-1);
  31. len=strlen(s2+1); F(i,1,len) m1=(m1*10+s2[i]-'0')%(md-1);
  32. len=strlen(s1+1); F(i,1,len) n2=(n2*10+s1[i]-'0')%md;
  33. len=strlen(s2+1); F(i,1,len) m2=(m2*10+s2[i]-'0')%md;
  34. scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
  35. if (a!=1)
  36. {
  37. ll e,f;
  38. e=(qpow(a,m1-1)*c)%md;
  39. f=(((((qpow(a,m1-1)-1+md)%md*b)%md*c)%md*inv(a-1))%md+d)%md;
  40. if (e==1)
  41. {
  42. ll tmp=(1LL+f*n2)%md;
  43. ans=((tmp-d+md)%md*inv(c))%md;
  44. }
  45. else
  46. {
  47. ll tmp=qpow(e,n1)+(((qpow(e,n1)-1+md)%md*f)%md*inv((e-1+md)%md))%md;
  48. ans=((tmp-d+md)%md*inv(c))%md;
  49. }
  50. }
  51. else
  52. {
  53. ll e,f;
  54. e=c; f=(((c*b)%md*(m2-1))%md+d)%md;
  55. if (e==1)
  56. {
  57. ll tmp=(1LL+f*n2)%md;
  58. ans=((tmp-d+md)%md*inv(c))%md;
  59. }
  60. else
  61. {
  62. ll tmp=qpow(e,n1)+(((qpow(e,n1)-1+md)%md*f)%md*inv((e-1+md)%md))%md;
  63. ans=((tmp-d+md)%md*inv(c))%md;
  64. }
  65. }
  66. printf("%lld\n",ans);
  67. }

  

BZOJ 3240 [Noi2013]矩阵游戏 ——费马小定理 快速幂的更多相关文章

  1. BZOJ 3240([Noi2013]矩阵游戏-费马小定理【矩阵推论】-%*s-快速读入)

    3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec   Memory Limit: 256 MB Submit: 123   Solved: 73 [ Submit][ St ...

  2. bzoj3240 [Noi2013]矩阵游戏——费马小定理+推式子

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3240 n 和 m 太过巨大,不难想到应该用费马小定理什么的来缩小范围: 总之就是推式子啦,看 ...

  3. hdu-5667 Sequence(矩阵快速幂+费马小定理+快速幂)

    题目链接: Sequence Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Others) ...

  4. hdu4549(费马小定理 + 快速幂)

    M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) 现在给出a, b, n,你能求出F[n ...

  5. 数论 --- 费马小定理 + 快速幂 HDU 4704 Sum

    Sum Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=4704 Mean: 给定一个大整数N,求1到N中每个数的因式分解个数的 ...

  6. 2014多校第一场 I 题 || HDU 4869 Turn the pokers(费马小定理+快速幂模)

    题目链接 题意 : m张牌,可以翻n次,每次翻xi张牌,问最后能得到多少种形态. 思路 :0定义为反面,1定义为正面,(一开始都是反), 对于每次翻牌操作,我们定义两个边界lb,rb,代表每次中1最少 ...

  7. BZOJ_[HNOI2008]_Cards_(置换+Burnside引理+乘法逆元+费马小定理+快速幂)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1004 共n个卡片,染成r,b,g三种颜色,每种颜色的个数有规定.给出一些置换,可以由置换得到的 ...

  8. hdu_4869(费马小定理+快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4869 Turn the pokers Time Limit: 2000/1000 MS (Java/O ...

  9. HDU 4704 Sum(隔板原理+组合数求和公式+费马小定理+快速幂)

    题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=4704 Problem Description   Sample Input 2 Sample Outp ...

随机推荐

  1. iOS 如何解决并发请求时,只接受最后一个请求返回的结果

      大致意思是 虽然NSOperation 的cancel 并不能取消请求,但是可以对这个NSOperation进行标记. 当cancel 属性是YES时,表明 NSOperation虽然已经执行,并 ...

  2. mongodb主从配置信息查看与确认

    在local库中不仅有主从日志 oplog集合,还有一个集合用于记录主从配置信息 system.replset: > use local > show collections > d ...

  3. 微信程序开发系列教程(二)使用JavaScript给微信用户发送消息

    我之前的文章 微信程序开发系列教程(一)开发环境搭建 介绍了微信开发环境的搭建,这篇文章我们就来一步步开发一些具体的功能. 功能需求:当有微信用户关注了您的公众号之后,您用JavaScript发送一个 ...

  4. Android的Activity之间传对象的方法

    传值代码块 //Serializeable传递对象的方法 public void SerializeMethod(){ Person mPerson = new Person(); mPerson.s ...

  5. Android计算器布局

    Android(安桌)计算器布局实现         ——解决整个屏幕方案 引言:     学完了android布局的几种方式,做了一个android计算器. 我在网上搜索了这方面的资料,发现了布局都 ...

  6. Educational Codeforces Round 12补题 经典题 再次爆零

    发生了好多事情 再加上昨晚教育场的爆零 ..真的烦 题目链接 A题经典题 这个题我一开始推公式wa 其实一看到数据范围 就算遍历也OK 存在的问题进制错误 .. 思路不清晰 两个线段有交叉 并不是端点 ...

  7. js 监听页面url锚点变化 window.onpopstate

    window.onpopstate = function (event) { if (location.href.indexOf('#') == -1) { location.reload(); } ...

  8. How to debug add-ins for arcgis

    Debugging add-ins To debug an add-in, follow these steps: Confirm that the add-in is deployed to the ...

  9. Bootstrap历练实例:基本按钮组

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  10. shell脚本,一个字符一个字符输出。

    [root@localhost wyb]# cat file abc def abc 789de f567 [root@localhost wyb]# cat fffile.sh #!/bin/bas ...