Cod sursa(job #314405)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 11 mai 2009 19:35:11
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 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%199999973)*(a%199999973))%199999973;
  if (b%2==1) a=((a%199999973)*(A%199999973))%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("%lld",a);   
 return 0;   
}