[关闭]
@iwktd981220 2018-10-02T02:47:13.000000Z 字数 675 阅读 442

快速降幂取模

CINTA


定理

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. long FastPower(int base, int power,int mod){
  4. if(base == 1)
  5. return 1;
  6. if(base == 0)
  7. return 0;
  8. long res = 1;
  9. while(power){
  10. if(power & 1)
  11. res = (res * base) % mod;
  12. power >>=1;
  13. //res *= res;
  14. base = (base * base) % mod;
  15. }
  16. return res % mod;
  17. }
  18. long FastPowerRecursion(int base,int power,int mod){
  19. if(base == 1)
  20. return 1;
  21. if(base == 0)
  22. return 0;
  23. if(power == 1)
  24. return base;
  25. if(power &1)
  26. return (FastPowerRecursion(base*base,power>>1,mod)*base)%mod;
  27. return (FastPowerRecursion(base*base,power>>1,mod))%mod;
  28. }
  29. int main(){
  30. long base,power;
  31. int mod;
  32. scanf("%ld %ld %d",&base,&power,&mod);
  33. printf("%ld\n",FastPower(base,power,mod));
  34. printf("%ld",FastPowerRecursion(base,power,mod));
  35. return 0;
  36. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注