【发布时间】:2018-03-29 08:31:18
【问题描述】:
我遇到了这个问题,就像下面的问题
您有一个包含 n 个整数的数组(整数可以大到 10^9)并且您有 q 个查询,每个查询都有一个数组索引,因此您必须将数组相乘而无需该特定索引的整数和那么你有一个数字,m,然后,你必须以这个数字 m(最多 10^9)取模,并给出每个查询的结果。
e.g. suppose you have an array of n = 5 integers
1,2,3,4,5
and you have q = 3 queries 1,3, 5 and mod value m = 100.
for 1st query: (2*3*4*5) mod 100 = 20
for 2nd query: (1*2*4*5) mod 100 = 40
for 3rd query: (1*2*3*4) mod 100 = 24
so output is 20,40,24
我不想让代码告诉我应该是最佳的方法。
【问题讨论】:
-
在实际问题中是m素数?
-
您的问题的答案取决于 m 与列表中的整数之间的关系。 m是素数吗? m 与列表中的所有数字互质吗?如果其中任何一个是这样,那么就有一种快速而简单的算法。如果不是或者你不知道,最好的算法会更慢但仍然可行。
-
不,m 不是素数