bzoj 1485 [HNOI2009]有趣的数列 卡特兰数

2023-10-04 02:59

本文主要是介绍bzoj 1485 [HNOI2009]有趣的数列 卡特兰数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

把排好序的序列看成一对对括号,要把他们往原数列里塞,所以就是括号序合法方案数
即为卡特兰数

f(n)=Cn2nn+1

求的时候为避免除法,可以O(n)计算每个素数出现次数,最后乘起来,打完之后发现其实根本不用快速幂……

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#define N 2000005
using namespace std;
int prime[N],minp[N],num[N],tot,n,p;
bool bo[N];
long long ans=1;
void getprime(){for(int i=2;i<=2*n;i++){if(!bo[i]){prime[++tot]=i;minp[i]=tot;}for(int j=1;j<=tot&&prime[j]*i<=2*n;j++){bo[i*prime[j]]=1;minp[i*prime[j]]=j;if(i%prime[j]==0) break;}}
}
void add(int x,int y){while(x!=1){num[minp[x]]+=y;x/=prime[minp[x]];}
}
int main()
{scanf("%d%d",&n,&p);getprime();for(int i=n+1;i<=2*n;i++)add(i,1);for(int i=1;i<=n;i++)add(i,-1);add(n+1,-1);for(int i=1;i<=tot;i++)if(num[i]){while(num[i]){if(num[i]&1)ans=(ans*prime[i])%p;prime[i]=(prime[i]*prime[i])%p;num[i]>>=1;}}printf("%d\n",ans);
}

这篇关于bzoj 1485 [HNOI2009]有趣的数列 卡特兰数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1157

相关文章

hdu4828(卡特兰数+逆元)

这题的前几个数据分别为1,2,5,14,32......................然后确定这是个卡特兰数列 下面来介绍下卡特兰数,它的递推式为f[i+1] = f[i]*(4*n - 6)/n,其中f[2] = f[3] =1;f[4] = 2;f[5] = 14;f[6] = 32.................................. 但是这题的n太大了,所以要用到逆元,

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

UVa 10820 Send a Table (Farey数列欧拉函数求和)

这里先说一下欧拉函数的求法 先说一下筛选素数的方法 void Get_Prime(){ /*筛选素数法*/for(int i = 0; i < N; i++) vis[i] = 1;vis[0] = vis[1] = 0;for(int i = 2; i * i < N; i++)if(vis[i]){for(int j = i * i; j < N; j += i)vis[j] =

高级数据结构设计--并查集及实现学习笔记(有趣篇)

并查集的程序设计: 为了解释并查集的原理,我将举一个更有趣的例子。 话说江湖上散落着各式各样的大侠,有上千个之多。他们没有什么正当职业,整天背着剑在外面走来走去,碰到和自己不是一路人的,就免不了要打一架。但大侠们有一个优点就是讲义气,绝对不打自己的朋友。而且他们信奉“朋友的朋友就是我的朋友”,只要是能通过朋友关系串联起来的,不管拐了多少个弯,都认为是自己人。这样一来,江湖上就形

Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(2) (*****生成数据结构类的方式特别有趣****)

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正​​ Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(1)-CSDN博客 本节内容 实现目标 通过已经得到的Excel表格数据,生成对应类对象(不赋值),一张表就是一个对象,其中包含了如下的字段  就像这样子  实现思路 上

有趣的手机端见缝插针游戏源码

有趣的手机端见缝插针游戏源码下载,注:本地预览请用火狐浏览器模拟移动端,chrome本地预览存在跨域问题。 微信扫码获取源码

发现个有趣的东西:Tweetable Mathematical Art(用三个140字符以内的函数生成一个1024尺寸的图片)

发现 我是在看《构建之法》这本书时,看到作者提到这个: 好厉害!用三段140字符以内的代码生成一张1024×1024的图片_IT新闻_博客园 这是2014年一个人在 Code Golf Stack Exchange (a question and answer site for programming puzzle enthusiasts and code golfers) 发起的编程挑战:

【练习7】Fibonacci数列

链接:https://www.nowcoder.com/practice/18ecd0ecf5ef4fe9ba3f17f8d00d2d66 分析: 当n为15的时候,可以用Math.min(c-n,n-b)来判断哪个是变成斐波那契数的最小步数。 public class Main {public static void main(String[] args) {Scanner i

云服务器如何提升你的创意生活:必试有趣项目

云服务器都可以做哪些有趣的项目 云服务器因其高效、灵活和可扩展等特点,成为了越来越多人选择的开发和学习平台。如果你拥有一台云服务器,但是不知道能用它做什么有趣的项目,那么这篇文章将为你提供一些有意思的想法。 1. 个人博客/网站 一个个人博客或网站无疑是云服务器的经典用途之一。你可以使用诸如WordPress、Hexo、Ghost等博客框架来创建属于自己的网站,分享知识和生活。 示例项目

牛客《剑指Offer》 -- 斐波那契数列

题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39 思路 对于n=0,应返回0。 class Solution {public:int Fibonacci(int n) {if(n==0) return 0;if(n==1||n==2) return 1;int a=1,b=1,c;n= n-2;for(int i =0