Cod sursa(job #1495487)

Utilizator Alex1234Alexandru Posea Alex1234 Data 3 octombrie 2015 10:15:21
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <iostream>
#include <cstdio>
using namespace std;
int m=1999999973;
long long pu(long long n,long long p)
{
    if(p==1)
        return n%m;
    else if(p==2)
        return (n*n)%m;
    else if(p%2==0)
    {
        long long x=pu(n,p/2)%m;
        return (x*x)%m;
    }
    else if(p%2==1)
    {
        long long x=pu(n,p/2)%m;
        return (((x*x)%m)*n)%m;
    }
}
int main()
{
    freopen("lgput.in","r",stdin);
    freopen("lgput.out","w",stdout);
    long long n,p;
    scanf("%lld",&n);
    scanf("%lld",&p);
    printf("%lld",pu(n%m,p));
    return 0;
}