CF1845F Swimmers in the Pool

题目描述

有 $n$ 个游泳者在长度为 $l$ 的水池中游泳。每个游泳者从时刻 $0$ 出发且互不干涉。 每个游泳者遵循以下路线:第 $i$ 个游泳者从位置 $0$ 开始游泳,以恒定的速度 $v_i$(每个单位时刻移动 $v_i$ 个单位长度)游到位置 $l$,到达后立即以相同的速度返回到位置 $0$。回到位置 $0$ 之后,立即重复以上过程。 当水池中(可为 $0,l$ 或任意其他水池中的位置)至少有 $2$ 个游泳者在相同位置时,我们把该时刻称为“相遇时刻”。 水池会开放 $t$ 时刻。求在 $t$ 时刻内相遇时刻的数量。输出答案对 $10^9+7$ 取模的结果。

输入格式

输入文件共 $3$ 行。 输入第 $1$ 行,整数 $l,t$。 输入第 $2$ 行,整数 $n$。 输入第 $3$ 行,整数 $v_1,v_2,v_3,\dots,v_n$。保证 $v_i$ 两两不同。

输出格式

输出在 $t$ 时刻内相遇时刻的数量对 $10^9+7$ 取模的结果。 ## 样例 \#1 解释 有 $3$ 个相遇时刻: - 时刻 $6$,两个游泳者都在位置 $6$; - 时刻 $12$,两个游泳者都在位置 $6$; - 时刻 $18$,两个游泳者都在位置 $0$。 ## 数据规模 对于 $100\%$ 的数据,$1 \le l,t \le 10^9$,$2 \le n \le 2 \times 10^5$,$1 \le v_i \le 2 \times 10^5$。其中 $i \in [1,n]$。 ------------ 译者:[$\color{#3498DB}{\textsf{\_Cppsteve\_}}$](https://www.luogu.com.cn/user/479296)

说明/提示

In the first example, there are three meeting moments: - moment $ 6 $ , during which both swimmers are in the point $ 6 $ ; - moment $ 12 $ , during which both swimmers are in the point $ 6 $ ; - and moment $ 18 $ , during which both swimmers are in the point $ 0 $ .