Cod sursa(job #1227615)

Utilizator Darius15Darius Pop Darius15 Data 10 septembrie 2014 21:58:29
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.47 kb
#include <fstream>

using namespace std;
ifstream f("lgput.in");
ofstream g("lgput.out");
long long mod=1999999973,u,n,p,i,o,aux,v[35],m[35];
int main()
{
    f>>n>>p;
    v[0]=n%mod;
    for (i=1;i<=32;i++)
    u=v[i-1]*v[i-1],v[i]=u%mod;
    o=-1;
    while(p>=1)
    {
        m[++o]=p%2,
        p=p/2;
    }
for (i=0;i<=o;i++)
aux=m[i],m[i]=m[o-i],m[o-i]=aux;
    p=1;
    for (i=0;i<=o;i++)
    if (m[i]==1) u=p*v[i],p=u%mod;
    g<<p;
    return 0;
}