我被给予F(0)=XF(i)=(A⋅F(i−1)^2 + B⋅F(i−1) + C)%10000001≤i≤N
现在给出了NABCX,如何有效地找到所有N元素?
我需要把这N个元素分成两组,其中最大的元素在第一组,第二大的在第二组,第三大的在第一组等等…最后需要找到两组元素之和的绝对差。
我能在不计算所有元素的情况下找到这个差异吗,因为n可以大到10^7并且ABCX最大值为100。

最佳答案

请注意,序列的下一个元素仅依赖于前一个元素,并且没有超过m=1000000个不同的元素,因为每个结果都是一个整数,取1000000的模。因此序列从某个点开始是周期性的。在找到句点之前,可以生成前几个元素(不超过m),然后立即知道如果元素总数为n,则每个元素有多少个。
现在,与10^7相比,10^6至少有一些改进。一旦你知道从0到999999的每一个数字在序列中出现了多少次,你也可以在o(m)操作中找到所需的差异。

10-06 04:49