Cod sursa(job #612554)

Utilizator andrei202Tulus Andrei andrei202 Data 8 septembrie 2011 18:15:20
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include<stdio.h>
#define M 1999999973
#define ll long long
ll x,y,rez;

ll putere(ll a,ll n)
{
if(n==0)
	return 1;
else
	if(n==1)
       return a%M;
    if(n%2==0)
       {a=putere(a,n/2);
	    a*=a;a%=M;
		return a;}
	else
		if(n%2!=0)
		  {a=putere(a,(n-1)/2);
		   a*=a;a%=M;
		   a*=(x%M);a%=M;}
}

int main()
{freopen("lgput.in","r",stdin);
 freopen("lgput.out","w",stdout);
 
 scanf("%lld %lld",&x,&y);
 rez=putere(x,y);
 printf("%lld",rez);
 
 fclose(stdin);
 fclose(stdout);

 return 0;}