Cod sursa(job #718423)
| Utilizator | Data | 20 martie 2012 19:43:21 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.44 kb |
#include<stdio.h>
#define nr 1999999973
FILE *f=fopen("lgput.in","r"), *g=fopen("lgput.out","w");
long long n, p;
long long put(int n, int p)
{
if( (p%2 == 0) && p)
{
long long a = put (n, p/2);
return (a*a)%nr;
}
if(p==0)
return 1;
else
if(p==1)
return n;
else
if(p%2)
return (n*put(n, p-1)) % nr;
}
int main()
{
fscanf(f,"%lld %lld", &n, &p);
fprintf(g,"%lld", put(n,p));
return 0;
}
