去***讲题,你还***有空翻着列表找题呢?别搞笑了
首先洛谷的题面十分的劝退(至少对我这个菜鸡来说是这样),我来解释一下(原来的英文题面):
有一个有若干个密码(每个密码都可以开箱子)的密码箱,密码是在$0$到$n-1$的数中的,且所有的密码都满足一个条件:如果$x$是密码,$y$也是密码($x$可能等于$y$),那么$(x+y)\%n$也是密码。现在有一个人在试密码,他试了$k$个数,前$k-1$个都是错的,第$k$个是对的。现在你要求这个密码箱最多有多少不同的密码。
显然如果$x$是一个密码,那么$ax\%n(a∈N)$也都是密码。所以我们可以先把$num_k$分解因数,然后我们从小到大枚举因数$f$,如果对于一个因数$f$前$k-1$个数都不能整除它,说明它符合题意,这个时候答案就是$\frac{n}{f}$,也就是取它的所有倍数。
然后我们发现这个玩意直接枚举来做的话理论上最差是$O(sqrt(n)k)$的,看起来根本过不去(实际上可以水过去)。于是学习了一种线性筛的解法
原文:https://www.cnblogs.com/ydnhaha/p/9762007.html