Cod sursa(job #2255806)

Utilizator andrei.gramescuAndrei Gramescu andrei.gramescu Data 7 octombrie 2018 16:55:21
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <cstdio>
using namespace std;

long long power(int a, int n) {
    if(n == 0) {
        return 1;
    }
    if(n == 1) {
        return a;
    }
    long long aux = power(a, n/2);
    if((n%2) == 0) {
        return ((aux % 1999999973) * (aux % 1999999973) % 1999999973) % 1999999973;
    }
    return ((((aux % 1999999973) * (aux % 1999999973) % 1999999973) % 1999999973) * (long long)(a % 1999999973) % 1999999973) % 1999999973;
}

int main() {

    FILE *fin, *fout;
    fin = fopen("lgput.in", "r");
    fout = fopen("lgput.out", "w");

    int a, n;
    fscanf(fin, "%d %d", &a, &n);
    fprintf(fout, "%lld", power(a, n));

    return 0;
}