力扣每日一题 数组元素的最小非零乘积 贪心 构造 数学 快速幂

Problem: 1969. 数组元素的最小非零乘积
在这里插入图片描述

思路

👨‍🏫 灵神题解

在这里插入图片描述
在这里插入图片描述
结论

( 2 p − 1 ) × ( 2 p − 2 ) 2 p − 1 − 1 (2^p-1)\times (2^p-2)^{2^{p-1}-1} (2p1)×(2p2)2p11

复杂度

时间复杂度: O ( n ) O(n) O(n)

空间复杂度: O ( 1 ) O(1) O(1)

Code

class Solution {
    static int MOD = 1_000_000_007;

    long pow(long x, int p) //改版快速幂(这里的幂的二进制是 全 1 的,换而言之,p 即是需要传统快速幂多少次)
    {
        x %= MOD;
        long res = 1;
        while(p-- > 0)
        {
            res = res * x % MOD;
            x = x * x % MOD;
        }
        return res;
    }

    public int minNonZeroProduct(int p) {
        long k = (1L << p ) -1;
        return (int)(k % MOD * pow(k-1,p-1) % MOD);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值