Cod sursa(job #2223417)
| Utilizator | Data | 20 iulie 2018 10:07:52 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
| Compilator | c | Status | done |
| Runda | Arhiva educationala | Marime | 0.52 kb |
#include <stdio.h>
#include <stdlib.h>
#define IMPART 1999999973
long long computePower(long long n,long long p){
if(p==1) return n;
else if(p%2==0) return computePower(n*n%IMPART,p/2);
else return n*computePower(n*n%IMPART,(p-1)/2);
}
int main()
{
FILE*fin,*fout;
fin = fopen("lgput.in" ,"r");
fout = fopen("lgput.out" ,"w");
long long n,p;
fscanf(fin, "%lld%lld" ,&n,&p);
fprintf(fout, "%lld\n" ,computePower(n,p));
fclose(fin);
fclose(fout);
return 0;
}
