ZeroorOne

[ABC293F] Zero or One

考虑有两种求法:

  1. 枚举 \(b\),然后暴力分解判断。
  2. 枚举答案的位数,然后在每一位上填 \(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\)

AC

posted @ 2023-07-31 14:45  wscqwq  阅读(8)  评论(0编辑  收藏  举报