首页 > 其他分享 >889. 满足条件的01序列

889. 满足条件的01序列

时间:2024-12-09 16:13:03浏览次数:5  
标签:满足条件 01 return infact int 889 long ret MOD

卡特兰数列的三种方式
h(0)=1 h(1) = 1;
1 h(n)= h(n-1)*(4*x-2)/ (x+1)
2 C(n)(2*n)/(n+1)
3 C(2*n)(n)-C(2*n)(n-1)

公式1

// 889. 满足条件的01序列.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

/*
https://www.acwing.com/problem/content/891/

给定 n 个 0 和 n 个 1,它们将按照某种顺序排成长度为 2n 的序列,求它们能排列成的所有序列中,
能够满足任意前缀序列中 0 的个数都不少于 1 的个数的序列有多少个。

输出的答案对 109+7 取模。

输入格式
共一行,包含整数 n。

输出格式
共一行,包含一个整数,表示答案。

数据范围
1≤n≤105
输入样例:
3
输出样例:
5
*/

//C n 2n /(n+1)  卡特兰数

#include <iostream>


using namespace std;

const int N = 200010;
const int M = 1e9 + 7;


long long qmi(long long a, long long b, long long m) {
	long long ret = 1;
	while (b) {
		if (b & 1) {
			ret *= a;
			ret %= M;
		}
		b >>= 1;
		a *= a; a %= M;
	}

	return ret;
}

long long dfs(long long x) {
	if (x == 1) return 1;
	if (x == 0) return 1;
	long long ret = dfs(x - 1) * (4 * x % M - 2) %M * qmi(x + 1, M - 2, M) % M;

	return ret;
}


long long solve(int x) {

	long long ret = dfs(x);
	return ret;
}


int main()
{
	int n; cin >> n;

	cout << solve(n) << endl;


	return 0;
}

公式2


#include <iostream>


using namespace std;

const int N = 200010;
const int MOD = 1000000000 + 7;


long long fact[N];
long long infact[N];

//C n 2n /(n+1)

long long qmi(long long a, long long m, long long MOD) {
	long long ret = 1;
	while (m != 0) {
		if (m & 1) {
			ret *= a;  ret %= MOD;
		}
		m >>= 1;
		a *= a; a %= MOD;
	}

	return ret;
}

void init() {
	fact[0] = 1;
	infact[0] = 1;
	for (int i = 1; i < N; i++) {
		fact[i] = fact[i - 1] * i % MOD;;
		infact[i] = infact[i - 1] * qmi(i, MOD - 2, MOD) % MOD;
	}
}

void solve(int x) {
	int a = 2*x, b = x;
	init();
	
	cout << fact[a] * infact[a - b] % MOD * infact[b] % MOD * qmi(x + 1,MOD-2,MOD) % MOD << endl;

}

int main()
{
	int n;
	cin >> n;
	solve(n);

	return 0;
}

公式3

#include <iostream>


using namespace std;

const int N = 200010;
const int MOD = 1000000000 + 7;


long long fact[N];
long long infact[N];

//C n 2n /(n+1)

long long qmi(long long a, long long m, long long MOD) {
	long long ret = 1;
	while (m != 0) {
		if (m & 1) {
			ret *= a;  ret %= MOD;
		}
		m >>= 1;
		a *= a; a %= MOD;
	}

	return ret;
}

void init() {
	fact[0] = 1;
	infact[0] = 1;
	for (int i = 1; i < N; i++) {
		fact[i] = fact[i - 1] * i % MOD;;
		infact[i] = infact[i - 1] * qmi(i, MOD - 2, MOD) % MOD;
	}
}

long long solve(int a,int b) {
	return  fact[a] * infact[a - b] % MOD * infact[b]  % MOD ;
}

int main()
{
	int n;
	cin >> n;
	init();
	
	cout << (solve(2 * n, n) - solve(2 * n, n - 1) +MOD) %MOD << endl;

	return 0;
}

标签:满足条件,01,return,infact,int,889,long,ret,MOD
From: https://www.cnblogs.com/itdef/p/18595216

相关文章

  • ABB机械臂3HAC035381-001驱动单元维修攻略来袭
    ABB机器人维修驱动单元是机器人的关键部件,负责控制机器人的运动。当驱动单元出现故障时,可能会导致机器人无法正常工作。以下是一些常见的ABB机器人驱动单元维修问题及解决方法:常见故障及解决方法1、电机故障:电机故障通常是由于过载、高温、绝缘老化等原因引起的。维修方法包括检查......
  • 企业或个人在迁移 Windows Server 2012 域控制器到 Windows Server 2019 过程中所需的
    WindowsServer2012升级到2019域迁移初级教程大纲1. 介绍与规划1.1域迁移概述域迁移的目的与意义升级WindowsServer2012到2019的优势迁移前的准备工作1.2升级前的检查当前环境检查(硬件、软件兼容性)域控制器检查与准备(域功能级别、Forest功能级别)Win......
  • #C01L07P01. C01.L07.for语句初识.什么是循环
    1.情景导入某校某年级某班某位男生很爱哭,“wa”、“wa”、“wa”声音经常不绝于耳,现在请你通过编程来模拟他的哭声,他每发出一次哭声,则你输出一行——一个“wa”;他哭了2次,我们可以这样写:#include<iostream>usingnamespacestd;intmain(){ cout<<”wa”<<endl; cout<<......
  • SAP QM不常用功能之事务代码QE01界面里的User Setting
    SAPQM不常用功能之事务代码QE01界面里的UserSetting   SAPQM模块中的QE01事务代码,用于为检验批录入检验结果。 在这个界面里,有一个笔者之前从未关注过的菜单Settings->UserSettings,如下图示,     弹出如下窗口,     激活如下三个选项:  ......
  • 01、vue2初体验
    一、Vue程序初体验先不去了解Vue框架的发展历史,Vue框架的特点,Vue的作者,这些对于我们开发来说,没有什么特别的作用,我们先学会基本使用,然后再去详细了解它的特点,就会发现,原来如此。但我们需要指导Vue是一个基于JavaScript(JS)实现的框架,想要使用它,就得先拿到Vue的js文件Vue官网......
  • springboot空巢老人健康管理系统小程序-计算机毕业设计源码29889
    摘 要随着社会老龄化程度不断加剧,空巢老人群体的健康管理问题日益引起人们的关注。为了更好地满足空巢老人群体的健康管理需求,本研究致力于设计并实现一款基于SpringBoot框架的空巢老人健康管理系统。该系统旨在为管理员用户、老人用户和医生用户提供全方位的健康管理服务......
  • ArkTs布局入门01——线性布局(Row/Column)
    1、概述布局指用特定的组件或者属性来管理用户页面所放置UI组件的大小和位置。组件按照布局的要求依次排列,构成应用的页面。在声明式UI中,所有的页面都是由自定义组件构成,开发者可以根据自己的需求,选择合适的布局进行页面开发。一个页面开发中,最优先的就是确定UI的布局结构,布局......
  • Day01
    Markdown学习标题三级标题四级标题字体Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!引用选择狂神说java,走上人生巅峰分割线图片超链接点击跳转链接列表abcabc表格名称性别生日张三男1997.1......
  • 上市公司与中央产业政策、省级产业政策匹配数据+代码(2001-2022年)
    中央及省级产业政策匹配是指上市公司(或特定行业、产业)与中央及省级政府制定的产业政策在方向、目标、领域等方面的相符程度。这些政策通常是为了促进特定行业或产业的发展、调整和优化,以适应国家或地区的经济发展战略和阶段。中央及省级产业政策的匹配对于上市公司和产业发展......
  • 网络初识01
    1.网络发展史单机时代—>局域网时代—>广域网时代—>移动互联网时代独立模式:计算机之间相互独立网络互联:将多台计算机连接在一起,完成数据共享数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信根据网络互连的规模不同,可以划分为局域网和广......