Cod sursa(job #3356804)

Utilizator Dumitru_SerbinaDumitru Serbina Dumitru_Serbina Data 4 iunie 2026 12:28:47
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

#define MOD 1999

uint64_t compute_power(uint64_t base, uint64_t exp) {
    uint64_t result = 1;
    base %= MOD;
    while (exp > 0) {
        if (exp % 2 == 1) {
            result = (result * base) % MOD;
        }
        base = (base * base) % MOD;
        exp /= 2;
    }
    return result;
}

int main(void) {
    FILE *fin = fopen("lgput.in", "r");
    if (fin == NULL) {
        perror(NULL);
        exit(1);
    }
    FILE *fout = fopen("lgput.out", "w");
    if (fout == NULL) {
        perror(NULL);
        fclose(fin);
        exit(1);
    }

    uint64_t n, p;
    if (fscanf(fin, "%lu %lu", &n, &p) == 2) {
        fprintf(fout, "%lu\n", compute_power(n, p));
    }

    fclose(fin);
    fclose(fout);
    return 0;
}