NOIP模拟四
NOIP模拟四
number
题目描述
现有 \(2^n\) 个点,点编号为 \(0\sim2^n-1\)。
定义这些点的一张异或图为:
先选定一个集合 \(S\)。
对于原图上编号为 \(x\) 和编号为 \(y\) 的点,如果 \(x\oplus y\in S\),那么在 \(x\) 和 \(y\) 之间连一条无向边。
数出有多少个集合 \(S\),满足它的大小尽量小且异或图为连通图。答案对 \(998244353\) 取模。
输入格式
请从
number.in中读入数据。输入一行一个数 \(n\)。
输出格式
请将答案输出到
number.out中。输出一行,表示答案。
样例
Input 1
1
Output 1
1
Input 2
2
Output 2
3
Input 3
3
Output 3
28
Input 4
189
Output 4
952004352
Input 5
999876
Output 5
936053454
数据范围
【数据范围】
对于所有数据,保证:\(n\le 10^6\)。
测试点编号 \(n \le\) \(1\sim 3\) \(5\) \(4 \sim 6\) \(200\) \(7 \sim 10\) \(10^{6}\) 样例解释
对于第二个样例,集合 \(S\) 的大小最小是 \(2\),\(\{1,2\}\),\(\{1,3\}\),\(\{2,3\}\) 均满足条件。
转换问题:对于一个 \(x\),如果有一个 \(a\in S\),那么 \(x\) 就向 \(x\oplus a\) 连边。
我们发现,集合 \(S\) 中每个数线性无关(即不存在某个数是其余若干个数的异或和)。
证明:如果有一个 \(a\in S\),那么 \(x\) 就向 \(x\oplus a\) 连边。
那么假如又有一个 \(b\in S\),则 \(x\) 会向 \(x\oplus a\) 连边,\(x\oplus a\) 会向 \(x\oplus a\oplus b\) 连边。
这时如果有 \(a\oplus b\in S\),则 \(x\) 会向 \(x\oplus a\oplus b\) 连边,我们会发现这不是必须的,因为此时通过 \(a\) 和 \(b\) 已经让它们连边了,就不需要再有一个 \(a\oplus b\in S\) 了。 可以把 \(a\oplus b\) 删掉。
也就是说,如果一个集合 \(S\) 如果其中某个数是其余若干个数的异或和,则这个集合不是最短的,因为可以把这个数删掉。
我们又发现,集合 \(S\) 最短长度为 \(n\)。
证明:因为集合 \(S\) 中每个数线性无关,所以任选任意个数异或和都不一样,共有 \(2^n\) 种选法,去掉不选即可以组成 \(2^n-1\) 种数。
若对于任意的 \(a\in S\),有 \(a<2^n\),那么集合任选任意个数异或和都小于 \(2^n\),和上面一结合,得出集合 \(S\) 任选任意个数异或和可以组成 \(1\sim2^n-1\) 的数。
也就是以编号为 \(0\) 的节点出发,可以通过 \(S\) 的任意组合链接到 \(1\sim2^n-1\) 的节点。
可以反证当 \(S\) 长度为 \(n-1\) 时无解。
那么我们可以做一个 dp 来求这个方案数。设 \(f_i\) 为决定了集合 \(S\) 前 \(i-1\) 个数,要求第 \(i\) 个数的方案数。第 \(i\) 位可以选 \(2^n\) 种数,因为前面 \(i-1\) 位选过了的若干个异或和不能选,所以去掉 \(2^{i-1}\) 种方案。转移方程为:
\]
因为集合 \(S\) 无序,所以最后要除以 \(n!\)。
/**
* @file number.cpp
* @tag: #数学
* @author: ZnPdCo
* @date: 2023-12-28 12:54:00
* @problem: https://www.xinyoudui.com/contest?courses=685&books=676&pages=19971&fragments=63901&problemId=19061
**/
#include <cstdio>
#define ll long long
#define N 1000010
#define P 998244353
ll n;
ll ans = 1;
ll qpow(ll x, ll y) {
if(y == 0) return 1;
if(y % 2 == 1) return x * qpow(x, y-1) % P;
ll tmp = qpow(x, y/2);
return tmp * tmp % P;
}
ll npow, xpow = 1, nfact = 1;
int main() {
freopen("number.in", "r", stdin);
freopen("number.out", "w", stdout);
scanf("%lld", &n);
npow = qpow(2, n);
for(ll i = 1; i <= n; i++) {
(ans *= ((npow - xpow)%P+P)%P) %= P;
(xpow *= 2) %= P;
(nfact *= i) %= P;
}
(ans *= qpow(nfact, P-2)) %= P;
printf("%lld", ans);
}
NOIP模拟四的更多相关文章
- NOIP 模拟四 考试总结
#T1随 又是liu_................... 数列n,m个操作,每次随机取a[i],x=x*a[i]%k; 问题是求x期望%mod; 首先考虑到期望转移过程中存在%k,一般套路线性期望 ...
- NOI.AC NOIP模拟赛 第四场 补记
NOI.AC NOIP模拟赛 第四场 补记 子图 题目大意: 一张\(n(n\le5\times10^5)\)个点,\(m(m\le5\times10^5)\)条边的无向图.删去第\(i\)条边需要\ ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- NOIP模拟赛-2018.11.7
NOIP模拟赛 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 如果用命令行编译程序可以发现没加头文件之类的错误. 编译之前另存一份,听说如果敲 ...
- 2017-9-22 NOIP模拟赛[xxy][数论]
XXY 的 的 NOIP 模拟赛 4 4 —— 数学专场 A Description定义 f(x)表示 x 的约数和,例:f(12)=1+2+3+4+6+12=28给出 x,y,求Σf(i),i∈[x ...
- 2014-10-31 NOIP模拟赛
10.30 NOIp 模拟赛 时间 空间 测试点 评测方式 挖掘机(dig.*) 1s 256M 10 传统 黑红树(brtree.*) 2s 256M 10 传统 藏宝图(treas. ...
- NOIp模拟赛二十八
(这是NOIp模拟赛?应该是NOI模拟赛不小心加了个p) 嗯,假装这是正经的NOIp模拟赛,从今天开始也写写题解吧(这几天被虐的惨惨) 今日情况:8+50+0=58 A题输出样例,B题正解写挂,C题不 ...
- 2019.6.20 校内测试 NOIP模拟 Day 1 分析+题解
这次是zay神仙给我们出的NOIP模拟题,不得不说好难啊QwQ,又倒数了~ T1 大美江湖 这个题是一个简单的模拟题. ----zay 唯一的坑点就是打怪的时候计算向上取整时,如果用ceil函数一 ...
- 「题解」NOIP模拟测试题解乱写II(36)
毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...
- 「题解」NOIP模拟测试题解乱写I(29-31)
NOIP模拟29(B) T1爬山 简单题,赛时找到了$O(1)$查询的规律于是切了. 从倍增LCA那里借鉴了一点东西:先将a.b抬到同一高度,然后再一起往上爬.所用的步数$×2$就是了. 抬升到同一高 ...
随机推荐
- 基于泰凌微的TLSR8355芯片的2.4G无线私有协议PCBA设计调试总结
一 前记 经常做物联网的类的产品,TLSR8355凭借着它的射频距离远,功能强大等优点成为很多客户的首选.TLSR8355系列专用于2.4GHz射频系统芯片解决方案,如零售/物流.专用网络.Beaco ...
- opus编解码的特色和优点
概念原理 Opus是一个有损音频压缩的数字音频编码格式,由Xiph.Org基金会开发,之后由互联网工程任务组(IETF)进行标准化,目标是希望用单一格式包含声音和语音,取代Speex和Vorbis ...
- vivo统一接入网关VUA转发性能优化实践
作者:vivo 互联网服务器团队 - Qiu Xiangcun 本文将探讨如何通过使用Intel QuickAssist Technology(QAT)来优化VUA的HTTPS转发性能.我们将介绍如何 ...
- I/O系统调用
常用系统调用 open #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int op ...
- C++小细节
cin不仅遇到EOF会返回无效状态(通常用来终止循环),遇到无效输入的时候也会返回无效状态,比如向整型变量输入字符. char类型的大小和机器有关,最小8位,大多数机器字节(byte)是8位,byte ...
- tomcat中虚拟主机以及web应用程序的配置
一:新建虚拟主机 1. 在tomcat里新建文件夹myapps,在里面添加ROOT文件,放入网站的首页文件 新建文本文档,输入你想要的内容我这里的内容是TOM.AI,把文本文档的名字改成index.h ...
- 记录--纯CSS实现一个简单又不失优雅的步骤条
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 步骤条是一种用于引导用户按照特定流程完成任务的导航条,在各种分步表单交互场景中广泛应用.先来看一下几个主流前端 UI 框架中步骤条组件的样 ...
- FreeMarker介绍及基本数据类型和用法
FreeMarker介绍及基本数据类型和用法 FreeMarker 中文官方参考手册 FreeMarker 英文官方参考手册 一.FreeMarker介绍 FreeMarker 是一款 模板引擎: 即 ...
- 使用自签名证书在Docker中部署Asp.Net Core(Abp)项目
一 编写Dockerfile文件 FROM mcr.microsoft.com/dotnet/aspnet:6.0 COPY / /app WORKDIR /app EXPOSE 80 ENTRYPO ...
- KingbaseES 原生XML系列一 -- XML构造函数
KingbaseES 原生XML系列一--XML构造函数(XML,XMLPARSE,XMLSERIALIZE,IS-DOCUMENT,XML_IS_WELL_FORMED,XML_IS_WELL_FO ...