Cod sursa(job #1645788)

Utilizator VladTiberiuMihailescu Vlad Tiberiu VladTiberiu Data 10 martie 2016 13:46:51
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <cstdio>
#include <vector>
#include <queue>
#include <set>
#include <stack>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <iomanip>

#define NMax 10
#define mod 1999999973
#define INF 0x3f3f3f3f
using namespace std;
long long n,p;

long long power(long long x,long long p){
    long long r = 1;
    while(p != 0){
        if(p % 2 == 1){
            p--;
            r = (r * (x % mod)) % mod;
        }
        x = (x * (x % mod) % mod);
        p /= 2;
    }
    return r % mod;
}
int main()
{
    freopen("lgput.in","r",stdin);
    freopen("lgput.out","w",stdout);
    scanf("%lld%lld",&n,&p);
    printf("%lld\n",power(n % mod,p));
    return 0;
}