Cod sursa(job #2162520)

Utilizator vladbatalanBatalan Vlad vladbatalan Data 12 martie 2018 11:41:39
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>
#define prim 1999999973
#define LL long long

using namespace std;

ifstream fin("lgput.in");
ofstream fout("lgput.out");

LL int lgput(LL int a, LL int b)
{
    LL int s=1;
    for(LL int p=1; p<=b; p<<=1)
    {
        if(p&b)
            s=(s*a)%prim;
        a=(a*a)%prim;
    }
    return s;
}

int cmmdc(int a, int b)
{
    int r = a%b;
    while(r!=0)
    {
        a = b;
        b = r;
        r = a%b;
    }
    return b;
}

int ciur(int n)
{
    if(n==1) return 0;
    bitset<2000001> b;
    int nr = 1;
    for(int i=4; i<=n; i+=2)
        b[i] = 1;
    for(int i=3; i<=n; i+=2)
    {
        if(!b[i])
        {
            for(int k=2; i*k<=n; k++)
                b[i*k] = 1;
            nr++;
        }
    }
    return nr;
}

int main()
{
    LL int a, b;
    fin >> a >> b;
    fout<<lgput(a,b);
    return 0;
}