Cod sursa(job #1600767)

Utilizator rares96cheseliRares Cheseli rares96cheseli Data 15 februarie 2016 13:20:33
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.68 kb
#include <stdio.h>

#define MOD 1999999973

typedef long long ll;
typedef unsigned long long ull;

ll logPow(ll base, ll exponent) {
    if (exponent == 0) {
        return 1;
    }

    if (exponent == 1) {
        return base;
    }

    ll res = 1;

    if (exponent & 1) {
        return (1LL * base * logPow( (base * base) % MOD, exponent >> 1)) % MOD;
    }

    return (1LL * logPow((base * base) % MOD, exponent >> 1)) % MOD;
}

int main() {
    FILE *f = fopen("lgput.in", "r");
    FILE *g = fopen("lgput.out", "w");

    int N, P;
    fscanf(f, "%d%d", &N, &P);

    fprintf(g, "%d", (int)logPow(N, P));

    fclose(f);
    fclose(g);
    return 0;
}