Cod sursa(job #153530)
| Utilizator | Data | 10 martie 2008 16:36:44 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 30 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.52 kb |
#include <stdio.h>
#define mod 1999999973
long long n, p;
long long lgput(long long n, long long p)
{
if (p==1) return n%mod;
if (p==2) return (n*n)%mod;
if (p&1)
{
long long x=lgput(n, p/2)%mod;
return (n*x*x)%mod;
}
else
{
long long x=(lgput(n, p/2))%mod;
return (x*x)%mod;
}
}
int main()
{
freopen("lgput.in","r",stdin);
freopen("lgput.out","w",stdout);
scanf("%lld%lld", &n, &p);
printf("%lld", (lgput(n,p))%mod);
fclose(stdin);
fclose(stdout);
return 0;
}
