Cod sursa(job #3132781)

Utilizator cristina_ovidiuCristina Ovidiu Lucian cristina_ovidiu Data 23 mai 2023 21:33:41
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.5 kb
#include <stdio.h>
#include <stdint.h>
#define PRIM    1999999973

uint64_t pw(uint64_t n,uint64_t p){
    uint64_t ans = 1;
    uint64_t pwr = n % PRIM;
    if(pwr == 0)return 0;
    while(p){
        if(p & 1){
            ans = (ans * pwr) % PRIM;
        }
        pwr = (pwr * pwr) % PRIM;
        p >>= 1;
    }
    return ans;
}

int main(){
    freopen("lgput.in","r",stdin);
    freopen("lgput.out","w",stdout);

    uint64_t n,p;
    scanf("%llu %llu",&n,&p);
    printf("%llu\n",pw(n,p));
    return 0;
}