Cod sursa(job #3135880)

Utilizator rose.stoicaStoica Rose-Marie rose.stoica Data 4 iunie 2023 17:01:59
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <stdio.h>
#include <stdlib.h>
#define modulo 1999999973
void citire( const char* path, int * x,int  *n)
{
    FILE *f;
    if((f=fopen(path,"r"))==NULL)
    {
        printf("eroare la citire");
        exit(-1);
    }
    fscanf(f,"%d%d",x,n);
    fclose(f);
}
long long exp(int x,int n)
{
    if(n==0)
        return 1;
    if(n%2==1)
        return x*exp(x*x,n/2);
    if(n%2==0)
        return exp(x*x,n/2);
    
}
void scriere(const char* path,long long p)
{
     FILE *f;
    if((f=fopen(path,"w"))==NULL)
    {
        printf("eroare la scriere");
        exit(-1);
    }
    fprintf(f,"%d\n",p);
    fclose(f);
}
 int main(void)
 {
    int x,n;
    citire("lgput.in.txt",&x,&n);
    long long power=exp(x,n)%modulo;
    scriere("lgput.out.txt",power);


    return 0;
 }