定义F(n)表示最小公倍数为n的二元组的数量。 即:如果存在两个数(二元组)X,Y(X <= Y),它们的最小公倍数为N,则F(n)的计数加1。 例如:F(6) = 5,因为[2,3] [1,6] [2,6] [3,6] [6,6]的最小公倍数等于6。
给出一个区间[a,b],求最小公倍数在这个区间的不同二元组的数量。 例如:a = 4,b = 6。符合条件的二元组包括: [1,4] [2,4] [4,4] [1,5] [5,5] [2,3] [1,6] [2,6] [3,6] [6,6],共10组不同的组合。
输入数据包括2个数:a, b,中间用空格分隔(1 <= a <= b <= 10^11)。
输出最小公倍数在这个区间的不同二元组的数量。
4 6
10
忽略x<=y这个条件
ans=∑i=1n∑j=1n[ijgcd(i,j)<=n] 双sigma+gcd?直接考虑反演 为方便考虑,下取整忽略不写,即除法默认下取整 套路得 ans=∑d=1n∑i=1n∑j=1n[gcd(i,j)=1][ijd<=n] 设f[d]表示gcd(i,j)=d满足上面的条件的个数 f[d]=∑i=1nd∑j=1nd[ijd2<=n] 代回 ans=∑k=1n∑d=1nμ(d)∑i=1nd∑j=1nd[kijd2<=n] ans=∑d=1nμ(d)∑k=1n∑i=1nd∑j=1nd[kij<=nd2] 即求 k∗i∗j<n 先假设 k<i<j 那么结果*6 再假设 k=i<j和k<i=j 结果*3 最后再加上X<=Y这个限制即ans=(ans+n)/2