Advertisement
PSYCHAMERON

UVa BigMod

Feb 7th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.79 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define pb push_back
  3. #define mp make_pair
  4. using namespace std;
  5. typedef unsigned int uint;
  6. typedef long long int llint;
  7. typedef pair<int, int> pii;
  8.  
  9. llint b, p, m;
  10. llint bigMod(llint b, llint p);
  11.  
  12. //========================\\main//========================//
  13. int main()
  14. {
  15.  
  16.  
  17.     while(cin >> b >> p >> m)
  18.     {
  19.         cout << bigMod(b, p) << "\n";
  20.     }
  21.  
  22.     return 0;
  23. }
  24. //========================\\main//========================//
  25.  
  26. llint bigMod(llint b, llint p)
  27. {
  28.     if(p == 0)
  29.     {
  30.         return 1 % m;
  31.     }
  32.  
  33.     if(p%2 == 0)
  34.     {
  35.         llint ret = bigMod(b, p / 2);
  36.         return ( (ret % m) * (ret % m) ) % m;
  37.     }
  38.     else
  39.     {
  40.         return ((b % m) * (bigMod(b, p - 1) % m)) % m;
  41.     }
  42.  
  43. } /////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement