Cod sursa(job #3299675)

Utilizator anamaria-carina.orszariAnamaria-Carina Orszari anamaria-carina.orszari Data 9 iunie 2025 08:31:59
Problema Ridicare la putere in timp logaritmic Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.55 kb
#include <stdio.h>
#define m 1999999973

long long exp_log(long long n, int p)
{
    if(p < 0)
    {
        n = 1.0 / n;
        p = (-1) * p;
    }
    if(p == 0) return 1;
    long long a=n, sol=1;
	for (long long i = 0; (1<<i) <= p; ++ i) 
	{
		if ( ((1<<i) & p) > 0)  
			sol= (sol * a) % m;
	
		a=(a * a) % m; 
	}
    return sol;
}
int main()
{
    long long n=0;
    int p=0;
    freopen("lgput.in","r",stdin);
	freopen("lgput.out","w",stdout);
	scanf("%f %d", &n, &p);
    printf("%lld\n", exp_log(n, p));
    return 0;
}