Problem
Calc
Description
给出,统计满足下面条件的数对的个数:
Input
一行一个数。
Output
Sample Input
1 | 15 |
Sample Output
1 | 4 |
HINT
测试点编号 | 数据规模 | 测试点编号 | 数据规模 |
---|---|---|---|
标签:莫比乌斯反演
Solution
一道稍有变形的莫比乌斯反演,有的算法,但我只会小常数的算法,不过可以过数据。
问题即求的值。设, , ,易知。
那么。
不妨设,那么, 。
有
显然只有级别种取值,可以根号分块来算,即枚举,每次找到相等的一段,统计间满足的的个数,可以套用基础莫比乌斯反演公式,即。
此算法先枚举的取值,再枚举的取值,最后枚举的约数计算反演。其中有级别种取值,所对应的都在之间,即共有级别种取值,而最后的又有级别种取值,故总时间复杂度应为。但是由于的取值总数通常到不了级别,且的取值总数通常也到不了级别,因此常数非常小,跑得贼快,可以过此题级别的数据。
Code
1 |
|