Cod sursa(job #3280352)

Utilizator wiki__Andrei Alecu izsak wiki__ Data 26 februarie 2025 11:37:57
Problema Ridicare la putere in timp logaritmic Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.46 kb
#include <fstream>
#include <map>
#include <unordered_map>
#include <queue>
#include <algorithm>
#include <bitset>
#include <cmath>
#include <set>
#include <stack>
#include <cstdint>
#include <vector>
#include <deque>
#include <string>
#include <climits>
#define a first
#define b second
#define pb push_back
#define s32 int32_t
#define s64 int64_t
#define s8 int8_t
#define s16 uint16_t
#define u32 uint32_t
#define u64 uint64_t
#define u8 uint8_t
#define u16 uint32_t
#define ll long long
#define Cmin CHAR_MIN
#define Cmax CHAR_MAX
#define Smin SHRT_MIN
#define Smax SHRT_MAX
#define US USHRT_MAX
#define Imin INT_MIN
#define Imax INT_MAX
#define UI UINT_MAX
#define Lmin LLONG_MIN
#define Lmax LLONG_MAX
#define UL ULLONG_MAX
#define ins insert
#define stV(v) sort(v.begin(),v.end())
#define st(v,n) sort(v,v+n)
#define st1(v,n) sort(v+1,v+1+n)
#define End <<"\n"
#define Umap unordered_map
#define pf push_front
#define popb pop_back
#define popf pop_front
#pragma GCC optimize("O5,Ofast,unroll-loops")
using namespace std;

const string FN = "lgput";

ifstream cin(FN + ".in");
ofstream cout(FN + ".out");

const int MOD = 1999999973;

int put(int x,int p) {

    if (p == 0) return 1;
    if (p == 1) return x % MOD;

    int aux = put(x,p/2) % MOD;

    if (p%2 == 0) return (aux * aux) % MOD;
    return (aux * aux) % MOD * x % MOD;

}

signed main() {

    int n,p;
    cin>>n>>p;

    cout << put(n,p);


}