Cod sursa(job #2341669)

Utilizator isa_tudor_andreiAndrei Tudor isa_tudor_andrei Data 12 februarie 2019 09:07:10
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.52 kb
#include <cstdio>
#define MOD 1999999973

using namespace std;

int exp( long long n, long long p ) {
  if( p == 0 )
    return 1;
  if( p == 1 )
    return n % MOD;
  if( p % 2 == 0 )
    return exp(((n%MOD) * (n % MOD))%MOD,p/2) % MOD;
  else
    return (n % MOD) * exp(((n % MOD) * (n % MOD))%MOD,(p-1)/2) % MOD;
}

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