Cod sursa(job #3298912)

Utilizator robertcd29Chira Robert-Denis robertcd29 Data 3 iunie 2025 01:21:42
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <stdio.h>

#define mod 1000000007

long long power(long long base, long long exp) {
    long long result = 1;
    base = base % mod;
    if (base == 0) return 0;

    while (exp > 0) {
        if (exp % 2 == 1) {
            result = (result * base) % mod;
        }
        base = (base * base) % mod; 
        exp = exp / 2;
    }
    return result;
}

int main() {
    FILE *fin = NULL;
    FILE *fout = NULL;
    if((fin = fopen("lgput.in", "r")) == NULL) {
        fprintf(stderr, "Eroare la deschidere\n");
        return 1;
    }
    if((fout = fopen("lgput.out", "w")) == NULL) {
        fprintf(stderr, "Eroare la deschidere\n");
        fclose(fin);
        return 1;
    }

    long long a,b;
    if (fscanf(fin, "%lld %lld", &a, &b) != 2) {
        fprintf(stderr, "Eroare la citire\n");
        fclose(fin);
        fclose(fout);
        return 1;
    }

    long long result = power(a, b);
    fprintf(fout, "%lld\n", result);

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