Cod sursa(job #3254880)

Utilizator Alex_DumitrascuAlex Dumitrascu Alex_Dumitrascu Data 9 noiembrie 2024 09:38:48
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.59 kb
#include <bits/stdc++.h>
#define ll long long

using namespace std;

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

const ll MOD = 1999999973;

int main()
{
    fin.tie(0); fin.sync_with_stdio(false);
    ll x, y; fin>>x>>y;
    ll p=1;
    //1 0 0
    while (y!=0) {
        if (y%2==1) p=(p*x)%MOD;
        x=(x*x)%MOD;
        y/=2;
        // cout<<x<<' '<<y<<' '<<p<<endl;
    }
    fout<<p;
    return 0;
}

/*
N*N*N*...*N de P ori
(a+b)%MOD = ( (a%MOD) + (b%MOD) ) % MOD
(a+b+c)%MOD = ( [ ( (a%MOD) + (b%MOD) ) % MOD ] +( c % MOD ) )% MOD
(a-b)%MOD = ( (a%MOD) - (b % MOD) ) % MOD
*/