Description
已知 x∈[1,N],y∈[1,M] ,求 xy 有多少种取值。
Constraint
N,M≤109
Analysis
若
AC=BD,C≠1,D≠1
,
则一定存在
r
使得
考虑到
A=∏paii,B=∏pbii
,
因为
ai⋅C=bi⋅D=[C,D]⋅ki
,
然后
ai=D(C,D)⋅ki
,
我们提取出
r=∏pkii
,
这样
rD/(C,D)=A,rC/(C,D)=B
。
那我们考虑这些不能被表示成
ab,b≠1
的
r
,
考虑以
因为
r
之间的结果不相交,所以直接加起来就好。
假设
实际上
p
相等的
即
(ri)j,1≤i≤p,1≤j≤M
只用考虑
i×j
的不同取值。
考虑
x∈[1,pM]
合法的情况是存在
t∈[1,p]
使得
t∣x
。
把
[1,pM]
分成
p−1
段,每段是
[(i−1)M+1,iM]
,
考虑区间
[l,r]
里面的数合法,要满足
t∈[i,p],t∣x
。
这样容斥就能计算,但
[i,p]
的规模可能达到
[1,30]
,
但
t1,t2
若满足
t1∣t2
,
t2
不需要保留,
实际中规模下降到
15
个数。
时间复杂度: O(215log2N) 。