p374.cpp 631 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #include <algorithm>
  2. #include <array>
  3. #include <iostream>
  4. #include <map>
  5. #include <utility>
  6. #include <vector>
  7. #include <iomanip>
  8. #include <sstream>
  9. #include <climits>
  10. #include <queue>
  11. #include <list>
  12. using namespace std;
  13. typedef unsigned long long nat;
  14. int main()
  15. {
  16. nat b, p, m;
  17. while(cin >> b >> p >> m)
  18. {
  19. // Modular exponentiation
  20. nat part = b % m;
  21. nat result = 1;
  22. while(p > 0)
  23. {
  24. if(p&1)
  25. result = (result * part) % m;
  26. p = p >> 1;
  27. part = (part*part) % m;
  28. }
  29. cout << result << endl;
  30. }
  31. return 0;
  32. }