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的常数大了几倍,可能要交几遍才能过