Cod sursa(job #2075915)
| Utilizator | Data | 25 noiembrie 2017 20:38:37 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | dopaj_maxim | Marime | 0.68 kb |
#include<stdio.h>
#include<limits.h>
#define MOD 1999999973
long long lgput(long long a,long long b)
{
long long r=1;
if(b==0)
{
return 1;
}
while(b>1)
{
if(b%2==0)
{
a=((a%MOD)*(a%MOD))%MOD;
}
else
{
r=((r%MOD)*(a%MOD))%MOD;
a=((a%MOD)*(a%MOD))%MOD;
}
b/=2;
}
return ((a%MOD)*(r%MOD))%MOD;
}
FILE*fin,*fout;
int main()
{
fin=fopen("lgput.in","r");
fout=fopen("lgput.out","w");
long long N,P;
fscanf(fin,"%lld%lld",&N,&P);
fprintf(fout,"%lld",lgput(N,P));
fclose(fin);
fclose(fout);
return 0;
}
