Cod sursa(job #1022782)
| Utilizator | Data | 5 noiembrie 2013 22:31:11 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.57 kb |
#include<stdio.h>
#include<string.h>
#define q 1999999973
FILE *f=fopen("lgput.in","r");
FILE *g=fopen("lgput.out","w");
long long putere(long long , long long);
int main()
{
long long n,p;
fscanf(f,"%lld%lld",&n,&p);
fprintf(g,"%lld",putere(n,p)%q);
}
long long putere(long long x,long long n)
{
if (n<0)
return putere(1/x, -n);
else
if (n==0)
return 1;
else
if (n==1)
return x;
else
if (n%2==0)
return putere(x*x, n/2);
else
if (n%2!=0)
return x * putere(x*x, (n-1)/2);
}
