zoukankan      html  css  js  c++  java
  • Problem. A

    题意简述:

    求从(1,cdots,n)中选(m)个不同的数,满足选出来的数的和(equiv kpmod n)的方案数。答案对(998244353)取模。

    数据范围:

    (0le k<n<998244353,mle n)

    解法:

    考虑答案的生成函数:
    (ans=sumlimits_{tequiv kpmod n}[x^t][y^m]prodlimits_{i=0}^{n-1}(1+x^iy))
    用循环卷积的方式表示就是:
    (ans=[x^k][y^m]prodlimits_{i=0}^{n-1}(1+x^iy)pmod{x^n-1})
    然后单位根反演,得到:
    (ans=frac1n[y^m]sumlimits_{j=0}^{n-1}omega_n^{-jk}prodlimits_{i=0}^{n-1}(1+omega_n^{ij}y))
    注意到(forall (n,j)=d,prodlimits_{i=0}^{n-1}(1+omega_n^{ij}y))都一样,因此我们可以考虑枚举((n,j)),得到:
    (ans=frac1n[y^m]sumlimits_{d|n}(prodlimits_{i=0}^{n-1}(1+omega_n^{id}y))(sumlimits_{i=0}^{n-1}[(i,n)=d]omega_n^{-ik}))
    先考虑如何计算(prodlimits_{i=0}^{n-1}(1+omega_n^{id}y)),利用(y^n-1=prodlimits_{i=0}^{n-1}(y-omega_n^i)),得到:
    (prodlimits_{i=0}^{n-1}(1+omega_n^{id}y)=(prodlimits_{i=0}^{frac nd-1}(1+omega_{frac nd}^iy))^d=(1-(-y)^{frac nd})^d=sumlimits_{i=0}^d(-1)^{frac{ni}d+i}{dchoose i}y^{frac {ni}d})
    再考虑如何计算(sumlimits_{i=0}^{n-1}[(i,n)=d]omega_n^{-ik}),利用(sumlimits_{d|n}mu(d)=[n=1])(frac1nsumlimits_{i=0}^{n-1}omega_n^{ik}=[n|k]),得到:
    (sumlimits_{i=0}^{n-1}[(i,n)=d]omega_n^{-ik}=sumlimits_{i=1}^{frac nd}[(i,frac nd)=1]omega_{frac nd}^{-ik}=sumlimits_{g|frac nd}mu(g)sumlimits_{i=0}^{frac n{dg}-1}omega_{frac n{dg}}^{ik}=sumlimits_{g|frac nd}mu(g)[frac n{dg}|k]frac n{dg})
    总结起来就是:
    (ans=frac1n[y^m]sumlimits_{d|n}(sumlimits_{i=0}^d(-1)^{frac{ni}d+i}{dchoose i}y^{frac {ni}d})(sumlimits_{g|frac nd}mu(g)[frac n{dg}|k]frac n{dg}))
    暴力计算即可,组合数可以分段打表/快速阶乘算法。

  • 相关阅读:
    datatables插件适用示例
    RabbitMQ三----'任务分发 '
    ftp上传下载
    运用JS导出ecxel表格、实现文件重命名
    浅谈MySQL索引背后的数据结构及算法【转】
    SQL语句导致性能问题
    由浅入深理解索引的实现【转】
    MySQL ACID及四种隔离级别的解释
    MyISAM引擎和InnoDB引擎的特点
    MySQL复制中slave延迟监控
  • 原文地址:https://www.cnblogs.com/cjoierShiina-Mashiro/p/12270274.html
Copyright © 2011-2022 走看看