Cod sursa(job #577705)

Utilizator TeodoraTanaseTeodora Tanase TeodoraTanase Data 10 aprilie 2011 15:16:55
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <cstdio>

using namespace std;

const int m=1999999973;
int n, p;

int f(int x,int n)
{
    if (n==0)
        return 1;
    if (n<0)
    {
        n=(-n);
        return (1/(f(x,n)))%m;
    }
    if (n%2)
    {
        n=(n-1)/2;
        int c=f(x,n);
        return (x*c*c)%m;
    }
    else
    {
        n/=2;
        int c=f(x,n);
        return (c*c)%m;
    }
}

int main()
{
    freopen ("lgput.in","r",stdin);
    freopen ("lgput.out","w",stdout);
    scanf ("%d %d",&n,&p);
    printf("%d\n",f(n,p)%m);
    return 0;
}