Cod sursa(job #1391288)

Utilizator BaweeLazar Vlad Bawee Data 17 martie 2015 19:44:55
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <cstdio>
#define ll long long
#define MOD 1999999973
using namespace std;
FILE*f=fopen("lgput.in","r");
FILE*g=fopen("lgput.out","w");
ll x,n,p=1;
int main()
{
    fscanf(f,"%d%d",&x,&n);
    /*30 de puncte
    while(n)
    {
        if((( x >> 1) << 1 ) == 1)
        {
            x=x*x;
            if(x>MOD) x%=MOD;
            n/=2;
        }
        else
        {
            p*=x;
            if(p>MOD) p%=MOD;
            n--;
        }
    }*/
    for(int i=0; (1 << i) <=n;i++)
    {
        if( ( (1<<i) & n ) > 0 )
            p=(p*x)%MOD;
        x=(x*x)%MOD;
    }
    fprintf(g,"%d\n",p);
    return 0;
}