Cod sursa(job #156157)

Utilizator rethosPaicu Alexandru rethos Data 12 martie 2008 13:14:38
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include <stdio.h>
#define mod 1999999973
long long lg(long long x,long long p)
{ if (p==0) return 1;
  long long r;
  if (p%2==0)
	{ r=lg(x,p/2);
	  r=r%mod;
	  r=r*r;
	  r=r%mod;
	  return r;
	}
  else
	{ r=lg(x,(p-1)/2);
	  r=r%mod;
	  r=r*r;
	  r=r%mod;
	  r=r*x;
	  r=r%mod;
	  return r;
	}
}
int main()
{ long long x,p,r;
  freopen("lgput.in","rt",stdin);
  freopen("lgput.out","wt",stdout);
  scanf("%lld %lld",&x,&p);
  r=lg(x,p);
  r=r%mod;
  printf("%lld",r);
  fcloseall();
  return 0;
}