Cod sursa(job #588179)
Utilizator | Data | 7 mai 2011 10:33:28 | |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.37 kb |
#include<fstream.h>
#define N 1999999973
long long n,p,i=0,k,x,y;
int v[100000];
int main()
{ifstream f("lgput.in");
ofstream g("lgput.out");
f>>n>>p;
while(p!=0)
v[i++]=p%2,p/=2;
x=n,y=n*n;
for(k=i-2;k>=0;k--)
if(v[k]==0)
y=((x%N)*(y%N))%N,x=((x%N)*(x%N))%N;
else
x=((x%N)*(y%N))%N,y=((y%N)*(y%N))%N;
g<<x%N;
f.close();
g.close();
return 0;}