Pagini recente » Cod sursa (job #3240825) | Cod sursa (job #2318967) | Cod sursa (job #2094003) | Cod sursa (job #2528809) | Cod sursa (job #397938)
Cod sursa(job #397938)
/*#include<stdio.h>
#define m 1999999973
int main()
{
int long long sol=1,n,p;
freopen("lgput.in","r",stdin);
freopen("lgput.out","w",stdout);
scanf("%ld %ld",&n,&p);
for(;p!=0;p=p/2)
{
if(p%2==1)
sol=(sol*n) % m;
n=(n*n)%m;
}
printf("%lld",sol);
return 0;
}
*/
#include <stdio.h>
#define m 1999999973
int main()
{
int i, p,a, sol = 1;
freopen("lgput.in","r",stdin);
freopen("lgput.out","w",stdout);
scanf("%d %d", &a, &p);
for (i = 0; (1<<i) <= p; ++ i) // Luam toti biti lui p la rand
{
if ( ((1<<i) & p) > 0) // Daca bitul i din p este 1 atunci adaugam n^(2^i) la solutie
sol= (sol * a) % m;
a=(a * a) % m; // Inmultim a cu a ca sa obtinem n^(2^(i+1))
}
printf("%d\n", sol); // Afisam solutia
}