题目分析
[x,y][x,y][x,y] 中共有 x−y+1x - y + 1x−y+1 个数。
我们很容易想到,找 [1,n][1,n][1,n] 中所有能被 kkk 整除数的个数即为 ⌊nk⌋\lfloor\frac{n}{k}\rfloor⌊kn ⌋。
能被 aaa 或 bbb 整除的数都是不满足条件的数。
那么设 [1,y][1,y][1,y] 中所有不满足条件的数的个数为 P1P_1P1 , [1,x)[1,x)[1,x) 中所有不满足条件的数的个数为 P2P_2P2 。
但是 AAA 中 与 BBB 中会重复统计 aaa 与 bbb 的公倍数,这个也很好处理,求 a,ba,ba,b 的最小公倍数,计算不满足条件的个数减去即可。这里设 a,ba,ba,b 的最小公倍数为 kkk。
P1=⌊ya⌋+⌊yb⌋−⌊yk⌋P_1 = \lfloor\frac{y}{a}\rfloor + \lfloor\frac{y}{b}\rfloor - \lfloor\frac{y}{k}\rfloorP1 =⌊ay ⌋+⌊by ⌋−⌊ky ⌋
P2=⌊x−1a⌋+⌊x−1b⌋−⌊x−1k⌋P_2 = \lfloor\frac{x-1}{a}\rfloor + \lfloor\frac{x-1}{b}\rfloor - \lfloor\frac{x-1}{k}\rfloorP2 =⌊ax−1 ⌋+⌊bx−1 ⌋−⌊kx−1 ⌋
答案则为:x−y+1−P1−P2x - y + 1 - P_1 - P_2x−y+1−P1 −P2 。
AC代码