Pagini recente » Cod sursa (job #973992) | Cod sursa (job #1103231) | Cod sursa (job #1234158) | Cod sursa (job #1364482) | Cod sursa (job #157938)
Cod sursa(job #157938)
//Ridicare ala putere in timp logaritmic
#include <cstdio>
const int p=1999999973;
int x,n,i,j,r[40],p2max;//r[k]=restul impartirii lui x^2^k la p
long long a,rest;
int main(){
freopen("lgput.in","r",stdin);
freopen("lgput.out","w",stdout);
scanf("%d %d",&x,&n);
p2max=0;while ((1<<p2max)<=n) p2max++;
p2max--;r[0]=x%p;
for (i=1;i<=p2max;i++) {a=r[i-1];
a=(a*a)%p;
r[i]=a;}
rest=1;
for (i=0;i<=p2max;i++)
if ((1<<i)&n) rest=(rest*r[i])%p;
printf("%d",rest);
}