【发布时间】:2016-10-19 11:00:29
【问题描述】:
假设数组 A 中有整数列表。
给定另一个包含查询的数组 Q。
对于每个查询 K,您需要找到 i 和 j 对的数量,使得 A[i] 和 A[j] 的乘积除以 K。
如何在没有任何蛮力方法的情况下有效地做到这一点?
例如:
给定
答:2 5 6 2 3
问:12 7 100 200
输出:5 0 2 3
说明:
除以 12 的对数是:(1,3), (1,4), (1,5), (3,4), (4,5)
除以 7 的对数是:无 ( 0) 等等……
如何在没有暴力破解的情况下有效地做到这一点?
【问题讨论】:
-
您尝试了什么,出了什么问题?你试过保理吗?数字和列表有多大?简单地打印出对的列表是 O(n^2)。多快才够快?
-
链接到原始问题:codechef.com/NPLQ1601/problems/NPLELD我知道了
-
@MoinakDebnath:超过时间限制?所以你确实有运行代码太慢了?
标签: c++ product division number-theory