问题描述
输入格式
一个正整数T表示数据组数。
接下来T行 每行两个正整数 表示N、M。(T <= 10000;N, M<=10000000)
输出格式
共T行,每行一个整数 表示第i组数据的结果。
样例输入 1
1
4 5
样例输出 1
122
样例输入 2
5
555 785
450 317
28 26
284 132
602 341
样例输出 2
64864969
41243780
103158
59672364
39607508
话不多说,直接推导
S可以O(1)求出来,后面的一坨显然是积性的,只需要将后面的求和在线性筛的时候预处理出来即可。
线性筛部分具体可参见代码。于是就可以在根号的复杂度内完成每次询问。最后注意要多取模,尤其是在算S的时候。(亲测30分)
附上代码
1 |
|