给定一个大小为 N 的数组。有 Q 个查询,需要计算 L 和 R 之间的 gcd,其中 L 和 R 满足 1 ≤ L ≤ R ≤ N。
如何高效地计算它,因为暴力方法会失败。
给定一个大小为 N 的数组。有 Q 个查询,需要计算 L 和 R 之间的 gcd,其中 L 和 R 满足 1 ≤ L ≤ R ≤ N。
如何高效地计算它,因为暴力方法会失败。
GCD是可加和可交换的。这意味着线段树可以在每个区间GCD查询中使用log(N)的时间解决此问题。
或者使用O(n log n)处理和每个查询O(1)的稀疏表