Cod sursa(job #405119)
| Utilizator | Data | 27 februarie 2010 16:18:36 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.55 kb |
#include <stdio.h>
int N,P;
void citire()
{
FILE *fin=fopen("lgput.in","r");
fscanf(fin,"%I64d %I64d",&N,&P);
fclose(fin);
}
long long f(long long n)
{
if (!n) return 1;
long long ret;
if(n%2)
{
ret=f((n-1)/2)%1999999973;
ret=ret*ret%1999999973;
ret=ret*N;
return ret;
}
else
{
ret=f(n/2)%1999999973;
ret=ret*ret%1999999973;
return ret;
}
}
void afisare()
{
FILE *fout=fopen("lgput.out","w");
fprintf(fout,"%I64d",f(P));
}
int main()
{
citire();
afisare();
}
