Cod sursa(job #571752)
| Utilizator | Data | 4 aprilie 2011 19:16:14 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.51 kb |
#include <fstream.h>
ifstream f("lgput.in");
ofstream g("lgput.out");
#define MOD 10000
long long n,c,p,r;
/*long long S(long long a, long long n)
{ long long q;
if(n == 0) return 1;
q = S(a, n/2);
q=(q*q);
if(n % 2) q=(q*a);
return q;
}
*/
long long S()
{ r = 1, c = n;
while (p > 0)
{ if (p & 1)
{ r = (r * c) % MOD;
p = p ^ 1;
}
else
{ c = (c*c) % MOD;
p = p >> 1;
}
}
return r;
}
int main()
{ f>>n>>p;
g<<S()<<'\n';
g.close(); return 0;
}
