Minimum Non-Zero Product of the Array Elements LeetCode solution in C++

1
class Solution {
2
public:
3
long long myPow(long long base, long long exponent, long long mod) {
4
if (exponent == 0) return 1;
5
if (exponent == 1) return base % mod;
6

7
long long tmp = myPow(base, exponent / 2, mod);
8

9
if (exponent % 2 == 0) { // (base ^ exponent/2) * (base ^ exponent/2)
10
return (tmp * tmp) % mod;
11
} else { // (base ^ exponent/2) * (base ^ exponent/2) * base
12
tmp = tmp * tmp % mod;
13
base %= mod;
14
return (tmp * base) % mod;
15
}
16
}
17

18
int minNonZeroProduct(int p) {
19
long long range = pow(2, p);
20
range--;
21
long long mod = pow(10, 9) + 7;
22
long long tmp = myPow(range - 1, range / 2, mod);
23
return (tmp * (range % mod)) % mod;
24
}
25
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0