Cod sursa(job #3136112)

Utilizator sxdoesnotexistVarga Sergiu sxdoesnotexist Data 5 iunie 2023 14:14:23
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <stdio.h>

#define modulus 1999999973

long int expLog(long int x,long int n) {

    long int r=1;
    if( n==0 )
        return r;

    while( n > 0 )
    {
            if( n%2==1 ) {
                r = (r*x)%modulus;
            }
            x = (x*x)%modulus;
            n = n/2;
    }

    return r%modulus;    
}

int main(){

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

    if( f==NULL || g==NULL ){
        printf("Error opening files\n");
        return 0;
    }

    long int N,p;
    if( fscanf(f,"%li %li",&N,&p)!=2 ) {
            printf("Something went wrong!\n");
            return 0;
    }
  //  fprintf(g,"%li raised at %li gives\n",N,p);
    fprintf(g,"%li\n",expLog(N,p));

    return 0;
}