题目大意:对于任意的>1的n gcd(a, b)不是n^2的倍数,的1到a和1到b的lcm(a,b)之和。
题解:又是一道变态题。。。。。。。。。。
可以参考同系列的上一篇文章,这题主要的特殊处在于不能出现gcd(a,b)为n^2倍数的lcm(a,b),通过一顿瞎搞我们发现最后要求的前缀和中多出了一个abs(u(D/i)),这还是一个积性函数,唯一不同的是i中包含prime[j]的情况,这个我们就找规律,如果一个数中包含三个一样的因子的话无论如何两个u中一定有一个包含两个一样的因子,那么表达式为0,所以出现这种情况的话最后一定为0。如果只有两个一样的因子的时候我们可以看出只有当两个u中各包含一个该因子的时候表达式才有值,再通过这个瞎推一下就行了。
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<iomanip>
#include<ctime>
#include<cmath>
#include<cstring>
#include<strin