Cod sursa(job #2637706)

Utilizator PaunDariaPaun Daria PaunDaria Data 24 iulie 2020 13:00:18
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <fstream>
using namespace std;

const int MOD = 1999999973;

/**Ridicare la putere in timp logaritmic
Dandu-se doua numere naturale N si P, se cere sa se calculeze restul impartirii lui NP la 1999999973.

Date de intrare
Fisierul de intrare lgput.in va contine 2 numere N si P.

Date de iesire
In fisierul de iesire lgput.out va fi scris un singur numar reprezentand restul impartirii lui NP la 1999999973.

Restrictii
2 ≤ N, P ≤ 232*/

ifstream f ( "lgput.in" );
ofstream g ( "lgput.out" );

int powlg ( long long a, long long p )
{
    long long x = a%MOD;
    int val=1;
    while ( p > 0 )
    {
        if ( ( p & 1 ) != 0 )
            val = val * x % MOD;
        x = x * x % MOD;
        p >>= 1;
    }
    return val;
}

int main()
{
    long long n, p;
    f >> n >> p;
    g << powlg ( n, p );
    f.close();
    g.close();
    return 0;
}