Cod sursa(job #930230)

Utilizator tsubyRazvan Idomir tsuby Data 27 martie 2013 15:19:47
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <cstdio>
#define impartitor 1999999973

long long n, p;

long long logPut(long long n, long long p)
{
    long long rez = 1;
     while(p != 1)
    {
        if(p%2 == 0)
        {
            n = n*n % impartitor;
            p/=2;
        }
        else
        {
            rez = rez * n %impartitor;
            p--;
        }
    }
    return (rez*n)%impartitor;
}
int main()
{
    freopen("lgput.in", "r", stdin);
    freopen("lgput.out", "w", stdout);

    scanf("%d %d",&n,&p);
    printf("%d",logPut(n,p));
    return 0;
}