Cod sursa(job #2955480)

Utilizator juniorOvidiu Rosca junior Data 17 decembrie 2022 09:55:48
Problema Ridicare la putere in timp logaritmic Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.64 kb
#include <fstream>
#include <iostream>

using namespace std;

ifstream fi("lgput.in");
ofstream fo("lgput.out");
int m = 1999999973, n, e, r;
long long p;

int main() {
    fi >> n >> e;
    r = 1;
    for (p = n; e > 0; e = e / 2) {
        if (e % 2 == 1)
            r = (r * p) % m;
        p = (p * p) % m;
    }
    fo << r;
    return 0;
}

/*

1011
1010 = 10
 101 =  5
  10 =  2 
   1 =  2
8421

732
szu

(a * b) mod p = ((a mod p) * (b mod p)) mod p

(n ^ p) mod prim = (n ^ (p - 1)) mod p *

2 ^ 10 = 1024

log(2) 1024 = 10
log(2) 4000000000 < 32

log(10) 1000 = 3

b ^ e = n

log(b) n = e

*/