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