「APIO 2019」奇怪装置

题目描述

考古学家发现古代文明留下了一种奇怪的装置。该装置包含两个屏幕,分别显示两个整数 $x$ 和 $y$。
经过研究,科学家对该装置得出了一个结论:该装置是一个特殊的时钟,它从过去的某个时间点开始测量经过的时刻数 $t$,但该装置的创造者却将 $t$ 用奇怪的方式显示出来。
若从该装置开始测量到现在所经过的时刻数为 $t$,装置会显示两个整数:$x = ((t + \lfloor \frac{t}{B} \rfloor) \bmod A)$,与 $y = (t \bmod B)$。
这里 $\lfloor x\rfloor$ 是下取整函数,表示小于或等于 $x$ 的最大整数。
考古学家通过进一步研究还发现,该装置的屏幕无法一直工作。
实际上,该装置的屏幕只在 $n$ 个连续的时间区间段中能正常工作。第 $i$ 个时间段从时刻 $l_i$ 到时刻 $r_i$。
现在科学家想要知道有多少个不同的数对 $(x, y)$ 能够在该装置工作时被显示出来。
两个数对 $(x_1, y_1)$ 和 $(x_2, y_2)$ 不同当且仅当 $x_1 \not = x_2$ 或 $y_1 \not = y_2$。
对于全部数据,$1\le n\le 10^6,1\le A,B\le 10^{18},0\le l_i\le r_i\le 10^{18},r_i<l_i+1$。

社论

考虑求出这个序列的循环节

一开始有 $t=0,x=0,y=0$,设它的循环节为 $k$,则 $t=k,x=0,y=0$

即:

$$
\begin{cases}
k+\left\lfloor \frac{k}{B} \right\rfloor \equiv 0 \pmod{A} \\
k \equiv 0 \pmod {B}
\end{cases}
$$

化简得:

$$
k=\frac{AB}{\gcd(B,B+1)}
$$

posted @ 2019-07-03 08:14 KingSann 阅读(...) 评论(...) 编辑 收藏