Cod sursa(job #1385284)

Utilizator rockzoneCerneanu Valentin rockzone Data 11 martie 2015 20:42:34
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include<cstdio>
const int n_max = 10001;
const int m = 1999999973;
using namespace std;
int main()
{
    long long a, sol=1;
    freopen("lgput.in", "r", stdin);
    freopen("lgput.out", "w", stdout);
    int n, p, i;
    scanf("%d %d", &n, &p);
    a=n;
    for(i=0; (1<<i)<=p; ++i)
    {
        if(((1<<i)&p)>0)
        {
            sol=(sol*a)%m;
            //printf("sol: %lld\n", sol);
        }
        a=(a*a)%m;
        //printf("a:%lld\n", a);
    }
    printf("%lld", sol);
    return 0;
}