ARC123E

题面

link

​ 多次询问,每次给定两个函数\(f(x)=\frac{x}{b_1}+a_1\)\(g(x)=\frac{x}{b_2}+a_2\)。求\(x\in [1,n]\)的个数使\(\lfloor f(x)\rfloor=\lfloor g(x)\rfloor\)

题解

​ 最关键的地方:只有当\(|f(x)-g(x)|\le 1\)的时候,才可能有\(\lfloor f(x)\rfloor=\lfloor g(x)\rfloor\)

​ 而当\(|f(x)-g(x)|\le 1\)的时候,\(\lfloor f(x)\rfloor\)\(\lfloor g(x)\rfloor\)的差是小于等于1的,即若差为1即不等,差为0相等(废话,但就是这个意思)

​ 所以我们就可以先判断大小关系,用\(r-l+1-\sum_\limits{i=l}^r\lfloor f(i)\rfloor-\lfloor g(i)\rfloor\)来得到答案。而\(\sum_{i=l}^r\lfloor \frac{i}{b_1}+a \rfloor\)也是可以快速算的。所以就没了。

启发

  • 求两个函数向下取整相等的个数方法如上。
posted @ 2022-02-17 17:17  qwq_123  阅读(72)  评论(0编辑  收藏  举报