E.cpp 696 B

1234567891011121314151617181920212223242526272829303132333435
  1. //
  2. // Created by 33470 on 11/6/2018.
  3. //
  4. #include<bits/stdc++.h>
  5. using namespace std;
  6. int poww2(int a, int b, int m) {
  7. int ans = 1, base = a % m;
  8. while (b != 0) {
  9. if (b & 1 != 0)
  10. ans = (ans * base) % m;
  11. base = (base * base) % m;
  12. b >>= 1;
  13. }
  14. return ans;
  15. }
  16. int poww(int a, int b, int m) {
  17. a %= m;
  18. if (b == 0 || a == 1)return 1;
  19. if (a == 0 || b == 1)return a;
  20. if (b % 2 == 0)return poww(a * a % m, b / 2, m);
  21. return (poww(a * a % m, b / 2, m) * a) % m;
  22. }
  23. int main() {
  24. int a, p, m;
  25. while (cin >> a >> p >> m) {
  26. if (a == 0 && p == 0 && m == 0)break;
  27. cout << poww(a, p, m) << endl;
  28. }
  29. return 0;
  30. }