Mai intai trebuie sa te autentifici.
Cod sursa(job #3135894)
Utilizator | Data | 4 iunie 2023 17:20:02 | |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
Compilator | c-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.69 kb |
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define modulo 1999999973
void citire( const char* path, long long* x,long long *n)
{
FILE *f=fopen(path,"r");
fscanf(f,"%lld%lld",x,n);
fclose(f);
}
int expo(long long x, long long n)
{
if(n==0)
return 1;
if(n%2==1)
return (x*expo((x*x)%modulo,n/2))%modulo;
if(n%2==0)
return expo((x*x)%modulo,n/2)%modulo;
}
void scriere(const char* path,int p)
{
FILE *f=fopen(path,"w");
fprintf(f,"%d\n",p);
fclose(f);
}
int main(void)
{
long long x,n;
citire("lgput.in",&x,&n);
int power=expo(x,n);
scriere("lgput.out",power);
return 0;
}