Cod sursa(job #3232640)

Utilizator Mihai_ToderascToderasc Mihai Mihai_Toderasc Data 31 mai 2024 17:56:19
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <stdio.h>
#include <stdlib.h>

#define MOD 1999999973
#define FILE_IN "lgput.in"
#define FILE_OUT "lgput.out"

long long int exponentiate(long long int x, long long int n) {
    if(n == 0) {
        return 1;
    }

    if(n % 2 == 1) {
        return (x * exponentiate((x * x) % MOD, (n - 1) / 2)) % MOD;
    }
    else {
        return (exponentiate((x * x) % MOD, n / 2)) % MOD;
    }
}

int main()
{
    FILE *fileIn = fopen(FILE_IN, "r"),
         *fileOut = fopen(FILE_OUT, "w");
    long long int n, p;

    fscanf(fileIn, "%lld%lld", &n, &p);

    long long int result = exponentiate(n, p);
    fprintf(fileOut, "%lld\n", result);

    fclose(fileIn);
    fclose(fileOut);

    return 0;
}