2020-2021:teams:farmer_john:jjleo:codeforces_round_643_div._2_virtual_participation
A
B
C
D
E
F
题意:交互题。猜一个数$X$的约数个数,你可以询问不超过$22$次,每次可以输出一个数$Q$,返回$gcd(Q,X)$,只要最终输出的数$d$满足下列条件之一即可,$| ans - d | \le 7,\frac{1}{2} \le \frac{ans}{d} \le 2$。$(1 \le X \le 10^{9}, 1 \le Q \le 10^{18})$
题解:从$2$开始,一直乘质因子直到再乘会超$10^{18}$为止,例如$Q = 2 \times 3 \times 5 \ldots\times 47 = 614889782588491410$,查询这个数然后将返回的值分解质因数,对每个质因数查询一个很大的次幂(大于$10^9的)$就可以查到$X$中这个质因子的指数,按照约数计算公式乘入答案$ans$,然后继续乘接下来的质因子。如果出现下面这些情况就可以直接停了:1.设$X$剩下最大的部分为$Y$,如果到了某个质因子$p$有$p^3>Y$,那么就可以停了,因为剩下顶多还有$\le 2$个质因子,答案为$ans,2ans,3ans,4ans$,直接输出$2ans$就可以。2.到了$631$之后仍有$p^3<Y$,那么剩下是由$1$到$3$个质因子组成,最少是$1$,最大为$16$,直接输出$8$即可。
2020-2021/teams/farmer_john/jjleo/codeforces_round_643_div._2_virtual_participation.txt · 最后更改: 2020/06/06 23:45 由 jjleo