题目大意
对于 $Q$ 组询问,给出在这个大区间的所有连续子区间不同GCD的个数。
题解
首先一个重要结论,$n$个数里面不同$GCD$的个数不会超过$\log_2n$ ,因此保证$GCD$个数不会太多,可以用map
存。
将询问离线处理,按右端点的大小排序。然后从左往右开始处理右端点,用一个 map[i]
来存储右端点不超过当前右端点,区间$GCD$为$i$的的区间中左端点最右的区间左端点的位置。同时将map[i]
对应在树状数组的位置+1,这样求树状数组$[l,r]$即可得到询问的答案。