Cod sursa(job #2930702)
| Utilizator | Data | 29 octombrie 2022 12:19:32 | |
|---|---|---|---|
| Problema | Ridicare la putere in timp logaritmic | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.49 kb |
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
const uint64_t MOD = 1999999973;
int main() {
FILE* fin = fopen("lgput.in", "r");
FILE* fout = fopen("lgput.out", "w");
uint64_t n, p;
fscanf(fin, "%lu %lu", &n, &p);
n %= MOD;
uint64_t pow = 1;
while(p) {
if(p & 1) {
pow *= n;
pow %= MOD;
}
n *= n;
n %= MOD;
p >>= 1;
}
fprintf(fout, "%lu", pow);
fclose(fin);
fclose(fout);
}