• [题解] LuoguP6197 [EER1]礼物


    https://www.luogu.com.cn/problem/P6197

    毒瘤题,还卡常qwq.......

    Description

    给一个长度为(n)的数列(a),满足递推关系(a_n=2a_{n-1}+ka_{n-2})(k)是你指定的值),边界(a_1=1,a_2=2)

    然后在给出(m)个质数,求最小的(k)使得对于在(1cdots n)内且不在指定的数内的素数(p),都有(pmid a_p),对一个(NTT)模数(c)取模。

    Solution

    你看它递推式长得那么别致就知道肯定有用 但NTT模数就很迷惑

    于是大力推通项

    先假设(a_n=q^n),首先要满足

    [q^n-2q^{n-1}-kq^{n-2}=0 ]

    提个(q^{n-2})出来

    [q^{n-2}(q^{2}-2q-k)=0 ]

    (q^2-2q-k=0),解方程得到

    [q_0=frac{2+sqrt{4+4k}}{2}=1+sqrt{k+1} ]

    [q_1=1-sqrt{k+1} ]

    然后找(c_0,c_1)满足(c_0q_0+c_1q_1=a_1=1,c_0q_0^2+c_1q_1^2=a_2=2)

    解得

    [c_1=frac{1}{2sqrt{k+1}},c_2=frac{-1}{2sqrt{k+1}} ]

    通项即为(a_n=c_0q_0^n+c_1q_1^n=frac{(1+sqrt{k+1})^n-(1-sqrt{k+1})^n}{2sqrt{k+1}}),下面令(r=sqrt{k+1})

    [a_n=frac{(1+r)^n-(1-r)^n}{2r} ]

    注意到分母,用二项式定理展开

    [sumlimits_{i=0}^n inom{n}{i} r^i-sumlimits_{i=0}^n (-1)^iinom{n}{i}r^i ]

    发现偶数项全部蒸发了,即

    [2sumlimits_{2i+1 le n} inom{n}{2i+1}r^{2i+1} ]

    把分母去掉

    [a_n=sumlimits_{2i+1 le n} inom{n}{2i+1} r^{2i}=sumlimits_{2i+1le n} inom{n}{2i+1} (k+1)^i ]

    太神奇辣

    而我们仅要求(p mid a_p),其中(p)是一个质数,有注意到(inom{p}{i}=frac{p!}{i!(p-i)!}),分母与(p)互质,讲除法转换成乘逆元,分子又有因数(p),所以当(0<i<p)(pmid inom{p}{i})(需要特判(inom{p}{0}=inom{p}{p}=1))。

    我们只关心大于(2)的质数(p)(a_2=2)显然(2 mid a_2)),所以

    [a_p=sumlimits_{i=0}^{(p-1)/2} inom{p}{2i+1}(k+1)^i equiv (k+1)^p pmod p ]

    所以我们只要求一个(k)满足对于不在指定的数中的素数,都有(k+1 equiv 0 pmod p),由于质数两两互质,由中国剩余定理可得最小的(k=prod p - 1)(p)没有被指定且(1le p le n))。

    于是线性筛出(1...n)内的素数算上面那个东西就好了。

    无解的情况就是指定的素数中有(2)的时候(与题目里不同,题目中是指定第(i)大的质数)。


    但这题非常毒瘤...还要卡常.....

    并不会一些奇怪的筛法...这里就提一下普通的线性筛如何卡常吧qwq...

    建议不要用vectorvector就算开了c++11O2还是慢.....

    所以尽量用数组,另外bitset也不用了...bool数组挺快的感觉...

    还有可以特判一下当前遍历到的数(i)(2)的倍数的时候..

    再写一写循环展开啥的...火车头也加上好了...

    如果还卡不过就洗洗睡吧多交几次试试...

    实在卡不过也没办法了...写出题人那种埃氏筛吧qwq

    代码太丑就不放了qwq

  • 相关阅读:
    在Python中调用C++模块
    [转载]科学家真懂统计学吗?
    [原]基因组变异检测概述
    [原]测序量估计
    软考之路—解答数据流图
    软考之路-搞定ER图到关系模式
    软考之路-网络攻击:主动攻击和被动攻击
    软考之路-计算机病毒
    初识ADO.net-访问数据的两种方式
    vb.net小试三层架构
  • 原文地址:https://www.cnblogs.com/wxq1229/p/12509119.html
Copyright © 2020-2023  润新知