【发布时间】:2019-06-16 05:21:22
【问题描述】:
我有一个 N 最多 10^5 的数组。
我需要用给定的L 和R 解决Q 范围查询。
Q
对于每个查询,我需要在 L 到 R 范围内找到不同的元素 然后找到它们的阶乘。
例如,如果数组是{5, 4, 2, 4, 5, 5, 7}。
如果L = 2 和R = 4。
那么我们有{ 4 : 2 times, 2: 1 time },所以答案是(2!)*(1!) = 2。
如果L = 1 和R = 5
然后我们有{5 : 2 times, 4: 2 times, 2 : 1 time},所以答案是(2!)*(2!).(1!) = 4。
O((N)*(Q)) 这个问题的解决方案是显而易见的。
我该如何优化它。
注意:所有阶乘均以 1000000007 为模计算
【问题讨论】:
-
10^5 是数组的最大 size 还是最大元素 value?
-
@paxdiablo 10^5 是数组的最大大小。元素最多可达 10^9
-
"所有阶乘均以 1000000007 为模计算" 这是编程比赛吗?如果是这样,请发布一个链接。如果比赛仍在进行中,请不要问和回答有关它的问题
标签: c++ algorithm data-structures combinations