当前位置: 首页 > news >正文

《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; }
http://www.jsqmd.com/news/210856/

相关文章:

  • 接口自动化测试知识总结
  • 《CF1278F Cards》
  • 三分钟带你看懂AI大模型(图文教程)
  • 积木报表重磅更新:移动报表功能全面支持,跨设备无缝对接
  • 普源数字万用表示值不准/开机异常的7种解决方法
  • 自动化测试基础知识总结
  • 区块链 Web3 项目开发
  • AbMole丨VcMMAE:从CD20到HER2,赋能多靶点ADC开发的通用平台
  • Launch Template 和 ALB、Target Group、Auto Scaling Group 是什么关系?
  • 软件测试之bug分析定位技巧
  • 普源数字万用表DM3068与是德科技34461A对比分析
  • 计算机网络入门必知:从信号到速率,一张图讲清通信基础!
  • 一文带你了解最吃香的金融类软件测试(附面试文档)
  • 解读|生产级RAG系统落地的10个经验教训
  • Amazon CloudWatch 的系统化汇总版
  • 2026最新软件测试面试热点问题(含答案+文档)
  • 熬走 3 任领导,从运维转行网安:原来不是我没本事,是赛道选错了
  • 基于单片机控制的汽车电动车窗 系统的设计
  • ‌高效性能测试场景设计指南
  • 网络安全渗透面试 10 题(含标准答案):从零基础到精通,一篇收藏全搞定!
  • 全球网安大神齐聚!第九届 XCTF 总决赛激战启幕,首日解题赛你追我赶燃到炸
  • 基于STM32的心率检测仪设计与实现
  • 是德科技 E4990A 阻抗分析仪:精准测量,赋能多领域应用
  • 导师严选8个AI论文工具,专科生轻松搞定毕业论文!
  • PyFlink 向量化 UDF(Vectorized UDF)Arrow 批传输原理、pandas 标量/聚合函数、配置与内存陷阱、五种写法一网打尽
  • TCL华星APEX臻图:一个新品牌的诞生与源头探析
  • 渗透测试从入门到精通:小白蜕变白帽黑客的终极学习路线
  • 阻抗分析仪脉冲阻抗测量技巧
  • AI编程安全:先提交再改代码
  • 用于材料测试的阻抗分析仪选购指南