Cod sursa(job #2456284)

Utilizator tomaionutIDorando tomaionut Data 14 septembrie 2019 09:37:44
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <bits/stdc++.h>
#define ll long long
#define MOD 1999999973
using namespace std;
ifstream fin("lgput.in");
ofstream fout("lgput.out");
ll P1(ll a, ll n)
{
    ll p=1;
    while (n>0)
    {
        if (n%2==1)
            p=p*a%MOD;
        n/=2;
        a=a*a%MOD;
    }
    return p;
}

ll P2(ll a, ll n)
{
    ll p=1, i;
    ll t[32];
    t[0]=a;
    t[1]=a*a;
    for (i=1; i<=30; i++)
        t[i]=t[i-1]*t[i-1]%MOD;
    i=0;
    while (n>0)
    {
        if (n%2==1) p=p*t[i]%MOD;
        n/=2;
        i++;

    }
    return p;
}
int main()
{
   ll a,b;
   fin>> a >> b;
   fout << P2(a,b);







    return 0;
}