1969. 数组元素的最小非零乘积

数组元素的最小非零乘积

解法一: 数学

go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const MOD = 1000000007

func minNonZeroProduct(p int) int {
// (2 ^ p - 1) * (2 ^ p - 2) ^ (2 ^ (p - 1) - 1)
base := 1 << p
return (base - 1) % MOD * pow((base-2)%MOD, (base>>1)-1) % MOD
}

func pow(x, n int) int {
if n == 0 {
return 1
}
half := n >> 1
halfAns := pow(x, half)
ans := halfAns * halfAns % MOD
if (n & 1) == 1 {
ans = ans * x % MOD
}
return ans
}
作者

wuhunyu

发布于

2024-03-20

更新于

2025-01-15

许可协议