Cod sursa(job #2028033)
| Utilizator | Data | 27 septembrie 2017 00:03:07 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.52 kb |
#include <fstream>
#define in "lgput.in"
#define out "lgput.out"
#define mod 1999999973
using namespace std;
ifstream fin(in);
ofstream fout(out);
typedef unsigned long long ull;
inline ull ridlog(ull n,ull p)
{
if(p < 2) return n;
ull R = ridlog(n,p/2);
if(R == 0) R = 1;
if(p%2 == 0)
{
return (R*R)%mod;
}
return (((R*R)%mod)*n)%mod;
}
int main()
{
ull n,p;
fin>>n>>p;
fout<<ridlog(n,p)%mod;
fin.close(); fout.close();
return 0;
}
