news 2026/2/3 2:01:16

《P3200 [HNOI2009] 有趣的数列》

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《P3200 [HNOI2009] 有趣的数列》

题目描述

我们称一个长度为 2n 的数列是有趣的,当且仅当该数列满足以下三个条件:

  • 它是从 1∼2n 共 2n 个整数的一个排列 {an​}n=12n​;

  • 所有的奇数项满足 a1​<a3​<⋯<a2n−1​,所有的偶数项满足 a2​<a4​<⋯<a2n​;

  • 任意相邻的两项 a2i−1​ 与 a2i​ 满足:a2i−1​<a2i​。

对于给定的 n,请求出有多少个不同的长度为 2n 的有趣的数列。
因为最后的答案可能很大,所以只要求输出答案对 p 取模。

输入格式

一行两个正整数 n,p。

输出格式

输出一行一个整数表示答案。

输入输出样例

输入 #1复制

3 10

输出 #1复制

5

说明/提示

【数据范围】
对于 50% 的数据,1≤n≤1000;
对于 100% 的数据,1≤n≤106,1≤p≤109。

【样例解释】
对应的 5 个有趣的数列分别为(1,2,3,4,5,6),(1,2,3,5,4,6),(1,3,2,4,5,6),(1,3,2,5,4,6),(1,4,2,5,3,6)。

代码实现:

#include <cstdio> using namespace std; const int N = 2e6 + 5; int v[N], pr[N], c = 0; // 补充快速读入函数 inline int read() { int x = 0; char c = getchar(); while (c < '0' || c > '9') c = getchar(); while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar(); return x; } // 补充快速输出函数 inline void writeln(int x) { if (x == 0) { putchar('0'); putchar('\n'); return; } char s[10]; int len = 0; while (x) s[len++] = x % 10 + '0', x /= 10; for (int i = len - 1; i >= 0; i--) putchar(s[i]); putchar('\n'); } inline void sieve(int n) { v[1] = 0; for (int i = 2; i <= n; i++) { if (!v[i]) pr[++c] = i, v[i] = i; for (int j = 1; j <= c && pr[j] * i <= n; j++) { v[pr[j] * i] = pr[j]; if (i % pr[j] == 0) break; } } } inline int qp(int a, int b, int mod) { int res = 1; for (; b; b >>= 1, a = 1ll * a * a % mod) if (b & 1) res = 1ll * res * a % mod; return res; } inline int cnt_p(int n, int p) { int res = 0; while (n) { res += n / p; n /= p; } return res; } int n, r[N], p, ans = 1; signed main(void) { n = read(), p = read(); sieve(2 * n); for (int i = 1; i <= c; i++) r[i] = cnt_p(2 * n, pr[i]) - cnt_p(n, pr[i]) - cnt_p(n + 1, pr[i]); for (int i = 1; i <= c; i++) ans = 1ll * ans * qp(pr[i], r[i], p) % p; writeln(ans); return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/30 3:11:36

AI产学研一体化平台:让硬核技术不再“纸上谈兵”

提到AI&#xff0c;很多人想到的是实验室里的论文、复杂的公式&#xff0c;或是企业里“用不上、用不好”的尴尬——高校的前沿技术躺在硬盘里&#xff0c;企业急需的解决方案找不到门路&#xff0c;学生学的AI知识和产业实际脱节。而AI产学研一体化平台&#xff0c;就是解决这…

作者头像 李华
网站建设 2026/1/30 13:44:41

基于单片机控制的汽车电动车窗 系统的设计

2.汽车车窗简介 2.1汽车电动车窗的组成与类型 电动车窗就是在汽车上可以使车窗玻璃自动升降的一个设备。电动车窗的最大优点就是在行车过程当中可以方便的开关门窗&#xff0c;减轻了行驶员在操作过程当中的操作难度。过去的电动车窗一般只存在于高档轿车上&#xff0c;但是现阶…

作者头像 李华
网站建设 2026/2/1 22:26:09

普源数字万用表示值不准/开机异常的7种解决方法

普源数字万用表作为电子测量中的常用工具&#xff0c;若出现示值不准或开机异常&#xff0c;会影响测量精度和效率。本文总结了7种常见问题的解决方法&#xff0c;帮助用户快速排查故障&#xff0c;恢复仪器正常功能。检查电池电量与接触 问题&#xff1a;电池电量不足或接触不…

作者头像 李华
网站建设 2026/1/30 16:56:49

监控视角工地建筑施工工程车辆检测数据集VOC+YOLO格式8345张10类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数)&#xff1a;8435标注数量(xml文件个数)&#xff1a;8435标注数量(txt文件个数)&#xff1a;8435标注类别…

作者头像 李华
网站建设 2026/1/29 20:43:26

Python接口自动化浅析pymysql数据库操作流程

本文主要介绍pymysql安装、操作流程、语法基础及封装操作数据库类,需要的朋友可以参考下&#xff0c;希望能对大家有所帮助&#xff0c;每日提升一点点&#xff0c;欢迎大家多多交流讨论 在自动化过程中&#xff0c;我们需要查询数据库&#xff0c;校验结果是否正确&#xff…

作者头像 李华