0%

    大数组元素的乘积


    一个整数 x强数组 指的是满足和为 x 的二的幂的最短有序数组。比方说,11 的强数组为 [1, 2, 8]

    我们将每一个正整数 i (即1,2,3等等)的 强数组 连接得到数组 big_numsbig_nums 开始部分为 `[1 ,

    2 , 1, 2 , 4 , 1, 4 , 2, 4 , 1, 2, 4 , 8 , ...]` 。

    给你一个二维整数数组 queries ,其中 queries[i] = [fromi, toi, modi] ,你需要计算

    (big_nums[fromi] * big_nums[fromi + 1] * ... * big_nums[toi]) % modi

    请你返回一个整数数组 answer ,其中 answer[i] 是第 i 个查询的答案。

    示例 1:

    输入: queries = [[1,3,7]]

    输出:[4]

    解释:

    只有一个查询。

    big_nums[1..3] = [2,1,2] 。它们的乘积为 4 ,4 对 7 取余数得到 4 。

    示例 2:

    输入: queries = [[2,5,3],[7,7,4]]

    输出:[2,2]

    解释:

    有两个查询。

    第一个查询:big_nums[2..5] = [1,2,4,1] 。它们的乘积为 8 ,8 对 3 取余数得到 2 。

    第二个查询:big_nums[7] = 2 ,2 对 4 取余数得到 2 。

    提示:

    • 1 <= queries.length <= 500

    • queries[i].length == 3

    • 0 <= queries[i][0] <= queries[i][1] <= 10^15

    • 1 <= queries[i][2] <= 10^5

阅读全文 »

    执行操作可获得的最大总奖励 II


    给你一个整数数组 rewardValues,长度为 n,代表奖励的值。

    最初,你的总奖励 x 为 0,所有下标都是未标记 的。你可以执行以下操作 任意次

    • 从区间 [0, n - 1] 中选择一个 未标记 的下标 i

    • 如果 rewardValues[i] 大于 你当前的总奖励 x,则将 rewardValues[i] 加到 x 上(即 x = x + rewardValues[i]),并标记 下标 i

    以整数形式返回执行最优操作能够获得的最大总奖励。

    示例 1:

    输入: rewardValues = [1,1,3,3]

    输出: 4

    解释:

    依次标记下标 0 和 2,总奖励为 4,这是可获得的最大值。

    示例 2:

    输入: rewardValues = [1,6,4,3,2]

    输出: 11

    解释:

    依次标记下标 0、2 和 1。总奖励为 11,这是可获得的最大值。

    提示:

    • 1 <= rewardValues.length <= 5 * 10^4

    • 1 <= rewardValues[i] <= 5 * 10^4

阅读全文 »