zoukankan      html  css  js  c++  java
  • CF1190F Tokitsukaze and Powers

    (m = p_0^{k_0})。如果 (p_0 mid p) 那么 (p^e=km+x) 的条件只有在 (e=0) 的时候对 (1) 会产生约束,其余的约束都被包含在了 (p_0) 那里,问题是平凡的。

    对于 (p_0 mid p)(T = {p^e mod m|e in N})(集合里的数均对 (m) 取模,下同)中不会存在 (p_0) 的倍数,故两个条件约束的数集无交。判断无解需要知道集合 (T) 的大小才行,故考虑计算 (|T| = mathrm{order}(p))。由于 (p^{varphi(m)}=1,)(mathrm{order}(p) mid varphi(m))。将 (varphi(m)) 用 Pollard-Rho 分解质因数后枚举约数进行检验即可计算出 (mathrm{order}(p))

    如果 (mathrm{order}(p) + frac{m}{p_0}+n geq m) 则显然无解,否则考虑找一组解。

    如果存在 (mod m) 意义下的原根,找一个原根 (g),设 (p equiv g^u mod m)。那么 (T = {g^0,g^u,g^{2u},ldots,g^{(mathrm{order}(p)-1)u}}),设 (v = gcd(u,varphi(m)) = frac{varphi(m)}{mathrm{order}(p)})。不难证明 (T = {g^0,g^v,g^{2v},ldots,g^{(mathrm{order}(p)-1)v}})。于是不合法的数在原根幂表示下指数一定是 (v) 的倍数。因为 (mathrm{order}(p) leq frac{m}{2}) 所以 (v geq 2),求出 (v) 后暴力枚举较小的指数选择。

    对于不存在原根的情况,(p_0=2)。可以这样做:

    • 对于 (m leq 10^7) 暴力;
    • 对于 (p = 4x+1),注意到 (forall e in N, p^e equiv 1 mod 4),所以可以在模 (4)(3) 的数中选,因为 (m > 10^7,n leq 5 imes 10^5) 所以总能选出来;
    • 对于 (p = 4x+3),只在模 (4)(1) 的数中选,那么可以把 (p) 换成 (p^2)。注意到在模 (2^k(k geq 3)) 意义下取 (g'=5) 时,任意一个模 (4)(1) 的数都可以表示为 (g') 的若干次幂,证明可以考虑计算 (mathrm{order}(g')),这里不多赘述。利用 (g') 就可以类似有原根的做法做。因为 (mathrm{order}(p^2) = frac{mathrm{order}(p)}{2}),而 (mathrm{order}(p) + frac{m}{p_0}+n geq m)(2mathrm{order}(p) leq varphi(m)),所以也总能选出一组解。

    忽略 long long 乘法实现总复杂度 (O(m^frac{1}{4} + d(varphi(m)) + n))

  • 相关阅读:
    linq to entity之字符串比较
    linq to entity 分页方法不支持LastOrDefault等操作的处理办法
    easyui蛋疼之二 tabs与accordion
    根据下拉框生成控件列表
    第一个flash AS代码
    250多个Jquery各式各样的插件
    对用户控件的访问方式重写
    WP7之Slider绑定textblock设置字体大小
    辉南三角龙湾
    回到正轨
  • 原文地址:https://www.cnblogs.com/Itst/p/12681034.html
Copyright © 2011-2022 走看看