二分 + 前缀和。
一个数的因子数等于其 每个质因子 pi 的数量加1 的乘积,即 i∏(cntpi+1)
q 次询问,要求我们单次查询需要控制在 O(logn) 内。
因为 10 以内只有 2,3,5,7 这 4 个质数,所以可以对这 4 个质数预处理前缀和
小美拿到了一个数组,她有q次查询,每次询问一个区间内所有元素的乘积有多少因子。你能帮帮她吗?
注:由于数组元素过多,所以是按连续段的方式给定。例如,[1,1,2,3,3,3]有2个1,1个2,3个3,因此表示为<2,1>,<1,2>,<3,3>。
第一行输入两个正整数n,m,代表数组的大小,以及连续段的数量。 接下来的m行,每行输入两个正整数ui,vi,代表一段区间内有vi个ui
接下来的一行输入一个正整数q,代表询问次数。 接下来的q行,每行输入两个正整数l,r,代表询问的是第l个数到第r个数的乘积的因子数量
1≤n≤1014
1≤m,q≤105
1≤ui≤10
1≤vi≤109
1≤l,r≤n
保证所有的vi之和恰好等于n
输出q行,每行输出一个整数,代表最终的乘积因子数量。由于答案可能过大,请对109+7取模
输入
6 3
1 2
2 1
3 3
2
1 3
2 6
输出
2
8