Cod sursa(job #915559)
| Utilizator | Data | 15 martie 2013 09:58:18 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.45 kb |
#include <fstream>
#define M 1999999973
#define ULL unsigned long long
using namespace std;
ifstream in ("lgput.in"); ofstream out ("lgput.out");
ULL lgput(unsigned int a, unsigned int b)
{
a%=M;
if(b==1)return a;
if(b==0)return 1;
if(b&1)
{
return a*lgput(a*a,(b-1)/2);
}
return lgput(a*a,b/2);
}
int main()
{
unsigned int a,b;
in >> a >> b;
ULL res = lgput(a,b)%M;
out << res;
}
