ZeroorOne
[ABC293F] Zero or One
考虑有两种求法:
- 枚举 \(b\),然后暴力分解判断。
- 枚举答案的位数,然后在每一位上填 \(0/1\),二分法判断。
我们考虑中庸之道(bushi,将 \(B=\sqrt[4]n\) 设为分界点,对于小于等于的情况,用1;否则用2;这样前者的复杂度 \(B\log n\),后者是 \(2^4\log n\)。
至于为什么去了分界线后后者就只有 \(4\) 位,我们考虑边界等于;若恰好等于,那么恰好有 \(5\) 位,而稍大一些就肯定少于 \(5\) 位,至多四位了。
注意后面的二分,我们可以控制一下上限(比如若高位为 \(1\),要使 \(b^3=10^{18}\)),二分上界小于等于 \(10^6\),若次高位为 \(1\),二分上界小于等于 \(\sqrt{10^{18}}=10^9\)。