Cod sursa(job #1022779)
Utilizator | Paun Victor Tzapul | Data | 5 noiembrie 2013 22:29:20 |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.54 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(int , int);
int main()
{
long long n,p;
fscanf(f,"%lld%lld",&n,&p);
fprintf(g,"%lld",putere(n,p)%q);
}
long long putere(int x,int 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);
}