Cod sursa(job #1692407)

Utilizator MithrilBratu Andrei Mithril Data 20 aprilie 2016 20:02:03
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>
#define MOD 1999999973
using namespace std;

ifstream fin("lgput.in");
ofstream fout("lgput.out");
long long n,p;

long long ridicare( long long x , long long  n )
{
    if( n == 1 )
        return x % MOD;
    else if( n % 2 == 0 )
    {
        x = x * x % MOD ;
        n = n/2 % MOD ;
        return ridicare( x , n )%MOD;
    }
    else if( n % 2 == 1 )
    {
        long long t = x % MOD;
        x = x * x % MOD ;
        n = (n-1)/2 % MOD ;
        return t*ridicare(x,n)%MOD;
    }
}

int main()
{
    fin >> n >> p ;
    fout << ridicare( n , p );
    return 0;
}