Cod sursa(job #742448)
Utilizator | Robert Bugiros | Data | 30 aprilie 2012 12:07:49 |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.58 kb |
#include <cstdio>
using namespace std;
const int MODULO = 1999999973;
long long n,p;
void citire()
{
freopen("lgput.in","r",stdin);
freopen("lgput.out","w",stdout);
scanf ("%lld%lld",&n,&p);
}
long long putere(long long a,long long b)
{
int nr;
if (b == 0)
return 1;
if (b % 2 == 1)
return (a * putere(a,b - 1)) % MODULO;
else
{
nr = putere(a,b / 2) % MODULO;
return (nr * nr) % MODULO;
}
return 0;
}
int main()
{
citire();
printf ("%lld",putere(n,p));
return 0;
}