http://www.lydsy.com/JudgeOnline/problem.php?id=4818 (题目链接)

题意

  一个长度为$n$的序列,每个元素是不超过$m$的正整数,且这$n$个数的和是$p$的倍数,这$n$个数中至少有一个是质数,问这样的序列有多少个。

Solution

  md吓死我了,还以为想错了,$p^2\log n$的半天不敢写=。=

  $f[i][j]$表示忽略质数条件下的长度为$i$,和$mod~p=j$的序列数;$g[i][j]$表示满足没有一个数是质数的情况下长度为$i$,和$mod~p=j$的序列数。

  然后这个东西倍增优化一下,每次$p^2$爆乘就好了。

细节

  循环卷积。mdzz卡空间,明明原题空间是256M。。

代码

#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
#define inf (1ll<<30)
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std; const int maxn=10000010,maxm=1010,MOD=20170408;
int p[maxn];
bool vis[maxn<<1];
LL F[maxm],G[maxm],f[maxm],g[maxm],c[maxm];
int n,m,P; void NTT(LL *a,LL *b,LL *r) {
int N=P<<1;
for (int i=0;i<N;i++) c[i]=0;
for (int i=0;i<P;i++)
for (int j=0;j<P;j++) (c[i+j]+=a[i]*b[j]%MOD)%=MOD;
for (int i=0;i<P;i++) r[i]=(c[i]+c[i+P])%MOD;
}
int main() {
scanf("%d%d%d",&n,&m,&P);
vis[1]=1;
for (int i=2;i<=m;i++) {
if (!vis[i]) p[++p[0]]=i;
for (int j=1;j<=p[0] && i*p[j]<=m;j++) {
vis[i*p[j]]=1;
if (i%p[j]==0) break;
}
}
for (int i=1;i<=m;i++) {
(++f[i%P])%=MOD;
if (vis[i]) (++g[i%P])%=MOD;
}
F[0]=G[0]=1;
for (;n;n>>=1) {
if (n&1) NTT(F,f,F),NTT(G,g,G);
NTT(f,f,f),NTT(g,g,g);
}
printf("%lld",(F[0]-G[0]+MOD)%MOD);
return 0;
}

最新文章

  1. System &amp; Runtime &amp;Math
  2. 我们如何学好java
  3. Ajax 异步调用代码
  4. C++ ORM ODB 入门介绍(二)
  5. UItexfile实时验证输入字符
  6. 让你提前知道软件开发(22):shell脚本文件操作
  7. 基于邮件系统的远程实时监控系统的实现 Python版
  8. mysql常用基础操作语法(二)~~对表的增删改操作【命令行模式】
  9. JAVA获取汉字拼音首字母
  10. PCIe传输速率和可用带宽(吞吐量)计算
  11. 【转】OS X Base System 上没有足够的空间来进行安装
  12. mac 中登陆mysql忘记密码解决办法
  13. LOJ6041 SAM+set+树状数组
  14. HTTP Status 500 - Could not open Hibernate Session for transaction;
  15. slaac
  16. MSCRM中报表开发一:创建基于SQL报表
  17. MT【98】三元对称不等式
  18. Android系统版本与API等级对应关系表
  19. PTA 大炮打蚊子&#160;&#160;&#160;(15分)
  20. 我的高效编程的秘诀--开发环境的重要性(IOS)

热门文章

  1. js类型----你所不知道的JavaScript系列(5)
  2. 系统重启后DNS地址默认修改修改引起的一次事故(Tomcat报错:java.net.UnknownHostException)
  3. nginx应用总结(1)-- 基础知识和应用配置梳理
  4. Centos6.5网络配置
  5. 第三次作业 (一)----------------------Visual Studio 2015的安装及单元测试
  6. BugPhobia开发篇章:Beta阶段第IX次Scrum Meeting
  7. 开始第一段SPRINT
  8. jq源码解析之绑在$,jQuery上面的方法
  9. 面象对象设计原则之五:依赖倒置原则(The Dependency Inversion Principle,DIP)
  10. Linux 文件系统概览