Cod sursa(job #314399)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 11 mai 2009 19:02:24
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.45 kb
#include <stdio.h>

long long fct(long long a,long long A,long long b)
{
 if (b<3) return a*a%199999973;
 else if (b<4) return a*a*a%199999973;
 else
 {
  a=fct(a,A,b/2);
  a=a*a%199999973;
  if (b%2==1) a=a*A%199999973;
  return a;
 }
}

int main()
{
 long long a,b,A;
 freopen("lgput.in","r",stdin);
 freopen("lgput.out","w",stdout);
 scanf("%lld%lld",&a,&b);
 a=a%199999973;
 A=a;
 if (b>1) a=fct(a,A,b);
 printf("%ld",a);
 return 0;
}