HDU6624

题意

为方便变量命名,这里题意中的变量与原题意不同,请仔细辨认

多测\(T(\le 10^5)\)
给定\(p,b(1<b<p)\),求最小的\(x\),使得\(bx\% p<x\)
\(3\le p\le 10^{15},p\in prime\)

做法

\(x\)合法,及满足\(0\le bx\%p<x\),其等价于\(\exists y\)\(s.t.~0\le bx-py<x\)
通过简单的变形:\(\frac{p}{b}\le \frac{x}{y}<\frac{p}{b-1}\)

\([\frac{p}{b},\frac{p}{b-1})\)中有整数很容易解决

下面考虑\(y\neq 1\)的情况

考虑在Stern-Brocot Tree上定位\(\frac{p}{b},\frac{p}{b-1}\)的位置

观察1:这两个节点\(a,b\)\(lca\)\(lca\neq a\)\(lca\neq b\)

证明:
\(3\le p\le 10^{{15}},1<b<p\)

观察2:最小的\(x\)\(lca\)的分子

\(O(logV)\)定位,\(O(logV)\)寻找\(lca\)
总复杂度\(O(TlogV)\)

但显然,这比std的常数大了几倍,可能要交几遍才能过

posted @ 2020-11-27 13:09  Grice  阅读(86)  评论(0编辑  收藏  举报