Pagini recente » Cod sursa (job #925982) | Cod sursa (job #703193) | Cod sursa (job #59048) | Cod sursa (job #50529) | Cod sursa (job #257005)
Cod sursa(job #257005)
#include<stdio.h>
#define modulo 1999999973
#define IN "lgput.in"
#define OUT "lgput.out"
FILE *fin=fopen(IN,"r");
FILE *fout=fopen(OUT,"w");
long long n,p;
long long putere(long long n, long long p, long long r);
int main()
{
fscanf(fin,"%lld %lld",&n,&p);
fclose(fin);
fprintf(fout,"%lld",putere(n,p,modulo));
fclose(fout);
return 0;
}
long long putere(long long n, long long p, long long r)
{
if(!p)
return 1; //returnam 1 deoarece orice numar la puterea 0 este 1
if(p%2) //daca exponentul este impar
return (n*putere(n,p-1,r))%r; //returnam restul impartirii n*n^(p-1) la r
//p este un numar par
long long x;
x=putere(n,p/2,r); //x primeste restul impartirii n^(p/2) la r
return (x*x)%r; //returnam restul lui x*x la r, adica restul impartirii (n^(p/2))^2 la r
}