Cod sursa(job #323073)
Utilizator | Dragos Ristache MKLOL | Data | 10 iunie 2009 17:24:52 |
---|---|---|---|
Problema | Ridicare la putere in timp logaritmic | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.45 kb |
#include<stdio.h>
long long a,b,c=1999999973,N;
long long modulo(long long m,long long n)
{
long long x;
if(n==0)
return 1;
if(n%2==0)
{
x=modulo(m,n/2)%c;
return (x*x)%c;
}
else if(n%2==1)
{
x=modulo(m,(n-1)/2)%c;
return (((x%c)*(x%c)*m)%c);
}
}
int main()
{ freopen("modulo.in","r",stdin);
freopen("modulo.out","w",stdout);
long long o;
scanf("%lld%lld",&a,&b);
a=a%c;
o=modulo(a,b);
printf("%lld",o);
}