[HNOI2009]【一本通提高组合数学】有趣的数列
[HNOI2009]有趣的数列
题目描述
我们称一个长度为
2
n
2n
2n 的数列是有趣的,当且仅当该数列满足以下三个条件:
它是从
1
∼
2
n
1 \sim 2n
1∼2n 共
2
n
2n
2n 个整数的一个排列
{
a
n
}
n
=
1
2
n
\{a_n\}_{n=1}^{2n}
{an}n=12n;
所有的奇数项满足
a
1
<
a
3
<
⋯
<
a
2
n
−
1
a_1<a_3< \dots < a_{2n-1}
a1<a3<⋯<a2n−1,所有的偶数项满足
a
2
<
a
4
<
⋯
<
a
2
n
a_2<a_4< \dots <a_{2n}
a2<a4<⋯<a2n;
任意相邻的两项
a
2
i
−
1
a_{2i-1}
a2i−1 与
a
2
i
a_{2i}
a2i 满足:
a
2
i
−
1
<
a
2
i
a_{2i-1}<a_{2i}
a2i−1<a2i。
对于给定的
n
n
n,请求出有多少个不同的长度为
2
n
2n
2n 的有趣的数列。
因为最后的答案可能很大,所以只要求输出答案对
p
p
p 取模。
输入格式
一行两个正整数
n
,
p
n,p
n,p
输出格式
输出一行一个整数表示答案。
输入输出样例
样例输入1
3 10
样例输出1
5
说明/提示
【数据范围】
对于
50
%
50\%
50% 的数据,
1
≤
n
≤
1000
1\le n \le 1000
1≤n≤1000;
对于
100
%
100\%
100% 的数据,
1
≤
n
≤
1
0
6
1\le n \le 10^6
1≤n≤106,
1
≤
p
≤
1
0
9
1\le p \le 10^9
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)。
Code
#include <bits/stdc++.h>
#define LL long long
using namespace std;
LL n, p, ans = 1, k;
int vis[2000005];
LL qmi(LL a, LL b, LL p)
{
LL res = 1;
while (b)
{
if (b & 1)
res = res * a % p;
a = a * a % p;
b >>= 1;
}
return res;
}
void c(LL x, LL p, LL f)
{
while (x)
k += f * x / p, x /= p;
}
int main()
{
cin >> n >> p;
for (LL i(2); i <= 2 * n; ++i)
{
if (vis[i])
continue;
k = 0;
c(2 * n, i, 1);
c(n + 1, i, -1);
c(n, i, -1);
ans = ans * qmi(i, k, p) % p;
for (LL j(2 * i); j <= 2 * n; j += i)
vis[j] = 1;
}
cout << ans;
return 0;
}
广告
绿树公司 - 官方网站:https://wangping-lvshu.github.io/LvshuNew/
绿树智能 - 官方网站:https://wangping-lvshu.github.io/LvshuZhineng/
(现在使用,人人均可获得300元大奖)
[HNOI2009]【一本通提高组合数学】有趣的数列的更多相关文章
- P2532 [AHOI2012]【一本通提高组合数学】树屋阶梯
[AHOI2012]树屋阶梯 题目描述 输入格式 一个正整数N( 1 ≤ N ≤ 500 1\le N \le 500 1≤N≤500),表示阶梯的高度. 输出格式 一个正整数,表示搭建方法的个数.( ...
- P2183 [国家集训队]【一本通提高组合数学】礼物
[国家集训队]礼物 题目背景 一年一度的圣诞节快要来到了.每年的圣诞节小 E 都会收到许多礼物,当然他也会送出许多礼物.不同的人物在小 E 心目中的重要性不同,在小 E 心中分量越重的人,收到的礼物会 ...
- 【一本通提高组合数学】 计算系数(NOIP2011提高组)
题面 思路 根据二项式定理, 那么 算 需要用快速幂. 可以根据组合式的递推公式算组合数.我是这么写的. 或者是利用组合数的定义式,但是因为有取余, 所以要用逆元. 其中 为逆元, 这个可以直接用 ...
- 【BZOJ1485】[HNOI2009]有趣的数列(组合数学)
[BZOJ1485][HNOI2009]有趣的数列(组合数学) 题面 BZOJ 洛谷 题解 从小往大填数,要么填在最小的奇数位置,要么填在最小的偶数位置. 偶数位置填的数的个数不能超过奇数位置填的数的 ...
- 【BZOJ】【1485】【HNOI2009】有趣的数列
Catalan数/组合数取模 Aha!这题我突然灵光一现就想到Catalan数……就是按顺序安排1~2n这些数(以满足前两个条件)……分配到奇数位置上的必须比偶数位置上的多(要不就不满足第三个条件了) ...
- BZOJ 1485: [HNOI2009]有趣的数列( catalan数 )
打个表找一下规律可以发现...就是卡特兰数...卡特兰数可以用组合数计算.对于这道题,ans(n) = C(n, 2n) / (n+1) , 分解质因数去算就可以了... -------------- ...
- BZOJ 1485: [HNOI2009]有趣的数列 [Catalan数 质因子分解]
1485: [HNOI2009]有趣的数列 Description 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所 ...
- BZOJ_1485_[HNOI2009]有趣的数列_卡特兰数
BZOJ_1485_[HNOI2009]有趣的数列_卡特兰数 Description 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ ...
- [HNOI2009]有趣的数列 题解(卡特兰数)
[HNOI2009]有趣的数列 Description 我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件: (1)它是从1到2n共2n个整数的一个排列{ai}: (2)所有的奇数项满 ...
随机推荐
- 印尼医疗龙头企业Halodoc的数据平台转型之路:数据平台V1.0
1. 摘要 数据是每项技术业务的支柱,作为一个健康医疗技术平台,Halodoc 更是如此,用户可以通过以下方式与 Halodoc 交互: 送药 与医生交谈 实验室测试 医院预约和药物 所有这些交互都会 ...
- 实战|Hadoop大数据集群搭建
一个执着于技术的公众号 前言 今天来为粉丝圆梦啦 话不多说,咱直接进入实战环节 实验环境: 主机名 IP地址 角色 qll251 192.16 ...
- 深度解析javaScript常见数据类型检查校验
前言 在JavaScript中,数据类型分为两大类,一种是基础数据类型,另一种则是复杂数据类型,又叫引用数据类型 基础数据类型:数字Number 字符串String 布尔Boolean Null Un ...
- 关于win10安装wsl子系统Ubuntu图形界面的错误解决
解决了https://blog.csdn.net/weixin_30834783/article/details/102144314Xserver个人使用的是VcXsrv. 在WSL中配置环境变量DI ...
- VMware 虚拟机图文安装和配置 AlmaLinux OS 8.6 教程
前言: 这是<VMware 虚拟机图文安装和配置 Rocky Linux 8.5 教程>一文的姐妹篇教程,如果你需要阅读它,请点击这里. 2020 年,CentOS 宣布:计划未来将重心从 ...
- 204. Count Primes - LeetCode
Queston 204. Count Primes Solution 题目大意:给一个数,求小于这个数的素数的个数 思路:初始化一个boolean数组,初始设置为true,先遍历将2的倍数设置为fal ...
- unity---光照基础
发射光源类型 光照参数介绍 让摄像头看到Flare 耀斑 改变影子
- 122_Power Pivot&Power BI不连续日期的日环比
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 这两天有朋友在交流,dax中使用时间智能函数写日环比,一个 dateadd 就可以了.但是有些业务不是每天都连续 ...
- HIVE 数据分析
题目要求: 具体操作: ①hive路径下建表:sale create table sale (day_id String, sale_nbr String, buy_nbr String, cnt S ...
- CMake进行C/C++开发(linux下)
开发环境配置 安装GCC,GDB sudo apt update # 通过以下命令安装编译器和调试器 sudo apt install build-essential gdb 安装成功确认 # 以下命 ...