Cod sursa(job #973606)
| Utilizator | Data | 14 iulie 2013 20:25:27 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.38 kb |
#include<stdio.h>
#include<math.h>
FILE *Fin=fopen("lgput.in","r"), *Fout=fopen("lgput.out","w");
long int x,p,y=1999999973;
int main ()
{
fscanf(Fin,"%d",&x);
fscanf(Fin,"%d",&p);
if(p%2==1 && p>2)
x=x*pow(x*x,(p-1)/2);
else
if(p!=0)
x=pow((x*x),(p/2));
if(x<y)
fprintf(Fout,"%d",x);
else
fprintf(Fout,"%d",x%y);
fclose(Fin);
fclose(Fout);
return 0;
}