Cod sursa(job #3357551)

Utilizator borduz-alexandru_ioanBorduz Alexandru Ioan borduz-alexandru_ioan Data 11 iunie 2026 11:51:51
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <stdio.h>
#include <stdlib.h>
#define MODULO 1999999973

long long exp_log_rec(long long x,long long n) {
    if(n < 0) return exp_log_rec(1.0 / x, -n);
    if(n == 0) return 1;
    if(n % 2 == 0) return exp_log_rec(x*x, n/2);
    if(n % 2 == 1) return x * exp_log_rec(x*x, n/2);
}

int main (void)
{
    FILE *in,*out;
    long long n,p;
    if((in=fopen("lgput.in","r"))==NULL)
    {
        perror("fopen buba");
        exit(1);
    }
    if((out=fopen("lgput.out","w"))==NULL)
    {
        perror("fopen out buba");
        exit(1);
    }
    if(fscanf(in,"%lld %lld",&n,&p)!=2)
    {
        fprintf(stderr,"PUSCA SCRIEREA BAI");
        exit(1);
    }

    fprintf(out,"%lld",exp_log_rec(n,p)%MODULO);

    fclose(in);
    fclose(out);
    return 0;
}