Cod sursa(job #1711321)
| Utilizator | Data | 30 mai 2016 23:16:39 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 0 |
| Compilator | c | Status | done |
| Runda | Arhiva educationala | Marime | 0.57 kb |
#include <stdio.h>
#include <stdlib.h>
#define PRIME 1999999973
void exponetiere ()
{
long long N,P,rez=1;
FILE *fin,*fout;
fin=fopen("lgput.in","r");
fout=fopen("lgput.out","w");
fscanf(fin,"%d %d",&N,&P);
while(P>1)
{
if(P%2==0)
{
N=(N*N)%PRIME;
P=P/2;
}
else
{
rez=(N*rez)%PRIME;
N=(N*N)%PRIME;
P=(P-1)/2;
}
}
fprintf(fout,"%lld",(rez*N)%PRIME);
}
int main()
{
exponetiere();
return 0;
}
