| 123456789101112131415161718192021222324252627282930313233343536373839 |
- #include <algorithm>
- #include <array>
- #include <iostream>
- #include <map>
- #include <utility>
- #include <vector>
- #include <iomanip>
- #include <sstream>
- #include <climits>
- #include <queue>
- #include <list>
- using namespace std;
- typedef unsigned long long nat;
- int main()
- {
- nat b, p, m;
- while(cin >> b >> p >> m)
- {
- // Modular exponentiation
- nat part = b % m;
- nat result = 1;
- while(p > 0)
- {
- if(p&1)
- result = (result * part) % m;
- p = p >> 1;
- part = (part*part) % m;
- }
- cout << result << endl;
- }
- return 0;
- }
|