[关闭]
@lychee123 2017-02-23T20:54:18.000000Z 字数 736 阅读 954

快速幂

模板 公式


  1. #define LL long long
  2. LL quick(LL x,LL m,LL n)//ans=x^m%n
  3. {
  4. LL ans=1;
  5. LL base=x%n;
  6. while(m)
  7. {
  8. if(m&1)
  9. ans=(ans*base)%n;
  10. base=(base*base)%n;//算一次模一次
  11. m>>=1;//右移=/2
  12. }
  13. return ans;
  14. }

代码

  1. #include<stdio.h>
  2. #define LL long long
  3. LL quick(LL x,LL m,LL n)//ans=x^m%n
  4. {
  5. LL ans=1;
  6. LL base=x%n;
  7. while(m)
  8. {
  9. if(m&1)
  10. ans=(ans*base)%n;
  11. base=(base*base)%n;//算一次模一次
  12. m>>=1;//右移=/2
  13. }
  14. return ans;
  15. }
  16. int main()
  17. {
  18. LL n,q,ans,k,a,b,c;
  19. scanf("%lld",&n);
  20. while(n--)
  21. {
  22. scanf("%lld%lld%lld%lld",&a,&b,&c,&k);
  23. if(b-a==c-b)
  24. {
  25. ans=((a%200907)+((k-1)%200907)*((b-a)%200907));
  26. printf("%lld\n",ans%200907);
  27. }
  28. else
  29. {
  30. q=b/a;
  31. ans=quick(q,k-1,200907);
  32. printf("%lld\n",((a%200907)*ans)%200907);
  33. }
  34. }
  35. return 0;
  36. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注