Cod sursa(job #1718374)

Utilizator borscalinCalin-Stefan Georgescu borscalin Data 17 iunie 2016 15:21:39
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.48 kb
#include <cstdio>
#define NMAX 1999999973

using namespace std;

int ridicare_la_putere(int n,int baza,int prod) {
    if (n == 0)
        return prod;
    if (n % 2 == 1)
        ridicare_la_putere(n - 1,baza,1LL * prod * baza % NMAX);
    else
        ridicare_la_putere(n / 2,1LL * baza * baza % NMAX,prod);
}

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