Cod sursa(job #3135886)

Utilizator rose.stoicaStoica Rose-Marie rose.stoica Data 4 iunie 2023 17:07:42
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>
#include <stdlib.h>
#include <math.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);
}
int expo(int x,int n)
{
    if(n==0)
        return 1;
    if(n%2==1)
        return (x*expo(x*x,n/2))%modulo;
    if(n%2==0)
        return expo(x*x,n/2)%modulo;
    
}
void scriere(const char* path,int 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);
    int power=expo(x,n);
    scriere("lgput.out.txt",power);


    return 0;
 }