Cod sursa(job #3134971)

Utilizator Axel_BlazeAxel Blaze Axel_Blaze Data 1 iunie 2023 09:36:34
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.59 kb
#include <stdio.h>
#define M 1999999973

FILE *fin = NULL, *fout = NULL;
long long n , p;

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

int main()
{
    fin = fopen("lgput.in","r");
    fout = fopen("lgput.out","w");
    fscanf(fin,"%lld %lld",&n,&p);
    fprintf(fout,"%lld",exp_log_rec(n,p));
    fclose(fin);
    fclose(fout);
    return 0;
}