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\)也是可以快速算的。所以就没了。
启发
- 求两个函数向下取整相等的个数方法如上。