Pagini recente » Cod sursa (job #1675994) | Cod sursa (job #21457) | Cod sursa (job #3031767) | Cod sursa (job #2962366) | Cod sursa (job #1290458)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("classictask.in"); ofstream g("classictask.out");
unsigned long long a,b,z;
unsigned long long rezultat = 1;
inline int maxim (int a, int b) { return (a>b)?a:b; };
int pow(int x, int n,int modul)
{
int tip;
if(n==0) return 1;
if(n%2==1) return (x*pow(x,n-1,modul))%modul;
tip=pow(x,n/2,modul)%modul;
return tip*tip%modul;
}
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 * pow(i,b,z);
}
}
rezultat = rezultat * pow(a, b, z);
g<<rezultat<<'\n';
*/
long long result = 1;
long long N, P, MOD; f>>N>>P>>MOD;
long long step = N;
for (long long i = 1; i <= P; i <<= 1)
{
if (P & i) result *= step;
step *= step;
step %= MOD, result %= MOD;
}
g << result;
f.close(); g.close();
return 0;
}