Cod sursa(job #900930)

Utilizator RaduDoStochitoiu Radu RaduDo Data 28 februarie 2013 22:50:35
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<vector>
#include<bitset>
#define INF 0x3f3f3f3f
#define mp make_pair
#define pb push_back
#define maxn 1024
#define MOD 1999999973
using namespace std;
int n,p;

int lgput(long long a, long long b)
{
    long long x = 1LL;
    while(b)
        if(b%2 == 0)
            a*=a,a%=MOD,b/=2;
        else
            x*=a,x%=MOD,b--;
    return x;
}

int main()
{
    freopen("lgput.in","r",stdin);
    freopen("lgput.out","w",stdout);
    scanf("%d%d",&n,&p);
    printf("%d\n",lgput(n,p));
    return 0;
}