Pagini recente » Cod sursa (job #2377231) | Cod sursa (job #3222859) | Cod sursa (job #3225210) | Cod sursa (job #3281815) | Cod sursa (job #1290449)
#include <iostream>
#include <fstream>
#define ll unsigned long long
using namespace std;
ifstream f("classictask.in");
ofstream g("classictask.out");
ll a,b,z;
ll rezultat = 1;
inline ll lgput (ll base, ll exp) {
ll put = 1;
while (exp) {
if (exp & 1)
put = (1LL*put *base)%z;
exp >>= 1;
base = (1LL * base * base) %z;
}
return put;
}
inline int maxim (int a, int b) { return (a>b)?a:b; };
int main() {
f>>a>>b>>z;
int limita = 1000;
limita = maxim(limita, a/2);
for (int i=2;i<=1000;i++)
if (a % i == 0) {
while (a % i == 0) {
a /= i;
rezultat = (rezultat * (lgput(i%z, b)%z))%z;
}
}
rezultat = (rezultat * (lgput(a%z, b)%z))%z;
g<<rezultat<<'\n';
f.close(); g.close();
return 0;
}