交互,给一堆数$1…n$,$n\leq 10^5$,$q\leq 10^4$
$10^5$的质数大概$9500$,$\sqrt{10^5}$的质数$70$。
分$x$
- 大质数$\leq \sqrt{10^5}$
- $1$
- 大质数$\times$一些小质数。
首先我们先把所有$1…\sqrt{10^5}$的质数去掉。
这样只剩下$x,1,大质数$
可以通过$\sum \log_i{n}$大概$170$找到$x=大质数\times 非大质数部分$
然后再去寻找是否有这个大质数。
这里使用类似二分的查找
- $[mid,r]$部分如果出现大质数倍数数量$>1$,就是第三种情况。
- 如果经过这波操作,通过$A,1$,$[mid,r]$还有残余,则表示有纯质数,这时候再询问一遍(答案一定在这里)。
- 否则$[l,mid-1]$继续寻找。
询问次数$9500+70+170\leq 10^4$
代码
1 |
|