Cod sursa(job #291847)
| Utilizator | Data | 30 martie 2009 14:33:04 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.42 kb |
#include <stdio.h>
#define MODULO 1999999973
unsigned long n,p;
void citire()
{
FILE *fin=fopen("lgput.in","r");
fscanf(fin,"%ld %ld",&n,&p);
fclose(fin);
}
int main()
{
citire();
n%=MODULO;
unsigned long i,y,z;
i=p; y=1; z=n;
while (i!=0)
{
if (i%2) y=(y*z)%MODULO;
z=(z*z)%MODULO;
i>>=1;
}
FILE *fout=fopen("lgput.out","w");
fprintf(fout,"%ld\n",y);
fclose(fout);
return 0;
}