Cod sursa(job #1796184)
| Utilizator | Data | 3 noiembrie 2016 10:36:12 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.54 kb |
#include <cstdio>
#define MOD 1999999973
using namespace std;
int main()
{
FILE *fin=fopen ("lgput.in","r");
FILE *fout=fopen ("lgput.out","w");
int n,m,aux=1;
fscanf (fin,"%d%d",&n,&m);
while (m>1){
if (m%2==0){
// n^m== (n^2)^(m/2)
n=((long long)n*n)%MOD;
m/=2;
}
else {
aux=((long long)aux*n)%MOD;
n=((long long)n*n)%MOD;
m/=2;
}
}
fprintf (fout,"%d",((long long)n*aux)%MOD);
return 0;
}
