LGP3702题解
很容易想到容斥,计算不包含质数的方案数和总方案数。
设 \(f[n][i]\) 表示长度为 \(n\) 的序列,每个元素的和对 \(p\) 取模的结果。
容易有 \(f[n][i]=\sum_{j=0}^pf[n-1][i-j\bmod p]\times g[j]\),\(g[j]\) 代表选出的数(非质数或 \([1,m]\) 的整数)对 \(p\) 取模为 \(j\) 的数的数量。
容易发现这是一个循环卷积,容易做到 \(O(p^2\log n)\)。
我们知道 \(DFT\) 做的也是循环卷积,所以我们把 \(w_n^{0\sim n-1}\) 拉出来,将 \(g\) 看做多项式,带入这些点值后快速幂,最后 \(IDFT\) 可以做到 \(O(p^2+p\log n)\)。
但是 \(20170408\) 不是质数 是省选的日期,进行质因数分解后可能系数没有下标,所以写了个 \(O(p^2\log n)\) 就溜了(
#include<cstdio>
typedef unsigned ui;
const ui M=105,N=2e7+5,mod=20170408;
ui n,m,p,g[M];bool zhi[N];
inline void times(ui*f,ui*g){
static ui sav[M<<1];
for(ui i=0;i<p;++i)for(ui j=0;j<p;++j)sav[i+j]=(sav[i+j]+1ull*f[i]*g[j])%mod;
for(ui i=0;i<p;++i)f[i]=(sav[i]+sav[i+p])%mod,sav[i]=sav[i+p]=0;
}
inline void sieve(const ui&M){
for(ui i=2;i*i<=M;++i)if(!zhi[i])for(ui j=i*i;j<=M;j+=i)zhi[j]=true;zhi[1]=true;
}
inline ui pow(ui*g,ui n){
static ui f[M];
for(ui i=0;i<p;++i)f[i]=0;f[0]=1;
for(;n;n>>=1,times(g,g))if(n&1)times(f,g);
return f[0];
}
signed main(){
ui sum1,sum2;
scanf("%u%u%u",&n,&m,&p);sieve(m);
const ui&x=m%p,&y=m/p;
for(ui i=0;i<p;++i)g[i]=1<=i&&i<=x?y+1:y;
sum1=pow(g,n);
for(ui i=0;i<p;++i)g[i]=0;
for(ui j=1,i=1;i<=m;++i){
if(zhi[i])++g[j];if(++j==p)j=0;
}
sum2=pow(g,n);
printf("%u",(mod+sum1-sum2)%mod);
}
LGP3702题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- NSString基本概念
1.NSString基本概念 什么是NSString? 一个NSString对象就代表一个字符串(文字内容) 一般称NSString为字符串类 2.NSString创建方式 最直接的方式(常量字符串) ...
- 一行代码为UITextField添加收键盘功能
iOS开发中收键盘是十分常用的功能,只需一行代码即可为ViewController添加工具条收键盘功能 更重要的是使用catogory,无代码污染. 代码 // UITextField+keyboar ...
- iOS加载Gif图片的N种方式 By-H罗
1.系统UIImageView 多张图片组成动画 /** * UIImageView 动画 * Memory-23M */ -(void)gifPlay1 { // NSArray *array=@[ ...
- Squid代理服务器应用
Squid代理服务器应用 目录 Squid代理服务器应用 一.Squid的脚本概念 1. Squid的作用 2. Web代理的工作机制 3. 代理服务器的概念 4. 代理服务器的作用 5. 代理的基本 ...
- 第10讲:Flink Side OutPut 分流
Flink系列文章 第01讲:Flink 的应用场景和架构模型 第02讲:Flink 入门程序 WordCount 和 SQL 实现 第03讲:Flink 的编程模型与其他框架比较 第04讲:Flin ...
- Redis 在 vivo 推送平台的应用与优化实践
一.推送平台特点 vivo推送平台是vivo公司向开发者提供的消息推送服务,通过在云端与客户端之间建立一条稳定.可靠的长连接,为开发者提供向客户端应用实时推送消息的服务,支持百亿级的通知/消息推送,秒 ...
- Linux运行级别及解释
Linux中有七个运行级别,分别为0~7 0级:关机 1级:单用户(找回丢失密码) 2级:多用户无网络 3级:多用户有网络,最常用的级别 4级:保留,目前Linux暂无使用 5级:图像界面 6级:重启 ...
- python基础语法_9-1闭包 装饰器补充
1.闭包的概念 closure:内部函数中对enclosing作用域的变量进行引用,外部函数返回内部函数名 2.函数实质与属性 函数是一个对象:在内存中有一个存储空间 函数执行完成后内部变量回收: ...
- PCI Verilog IP
1 PCI IP设计 虽然PCI已经逐渐淘汰,但是还是有不少应用需要这样的接口通讯. 设计目的是为了提供基于源码的PCI IP,这样硬件就不必受限于某一个FPGA型号,也方便ASIC迁移.由 ...
- Diary / Solution Set -「WC 2022」线上冬眠做噩梦
大概只有比较有意思又不过分超出能力范围的题叭. 可是兔子的"能力范围" \(=\varnothing\) qwq. 「CF 1267G」Game Relics 任意一个 ...