题解说的很好呀==

就是拿50和100的买票多少种方案==

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<algorithm>
 4 using namespace std;
 5 #define LL long long
 6 #define MOD 1000000007
 7 LL fac[1000005];
 8 char s[1000005];
 9 LL inv(LL a,LL mod)
10 {
11   LL b=mod,b0=b,t,q,x0=0,x1=1;
12   if (b==1) return 1;
13   while (a>1)
14   {
15     q=a/b;
16     t=b,b=a%b,a=t;
17     t=x0,x0=x1-q*x0,x1=t;
18   }
19   if (x1<0) x1+=b0;
20   return x1;
21 }
22 int main()
23 {
24   LL n,len,a,b,i,judge,p,q,x;
25   fac[0]=1;
26   for (i=1;i<=1000000;i++) fac[i]=fac[i-1]*i%MOD;
27   while (~scanf("%I64d",&n))
28   {
29     scanf("%s",s);
30     len=strlen(s);
31     a=b=0; judge=1;
32     for (i=0;i<len;i++)
33     {
34       if (s[i]=='(') a++;
35       else b++;
36      if (a<b) judge=0;
37     }
38     if (judge==0||a>n/2||b>n/2||n%2) {
39       printf("0\n");
40       continue;
41     }
42     p=n/2-b; q=n/2-a;
43     x=(p-q+1)*fac[p+q]%MOD;
44     x=x*inv(p+1,MOD)%MOD;
45     x=x*inv(fac[p],MOD)%MOD;
46     x=x*inv(fac[q],MOD)%MOD;
47     printf("%I64d\n",x);
48   }
49   return 0;
50 }

View Code

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5184

转载于:https://www.cnblogs.com/xiao-xin/articles/4340343.html

hdu5184 给出(和)前半段问后面有多少种加括号方法使合法:类似卡特兰数+逆元模板...相关推荐

  1. 正方形分成16份,将1到16填入其中。让行和列都是从大到小。问一共有多少种方法?...

    看了到面试题: 将正方形分成16份,将1到16填入其中.让行和列都是从大到小.问一共有多少种方法? 此题 解法有: 1. 穷举,基本不用考虑 复杂度O(16!). 2. 枚举+剪枝 .代码如下:得到答 ...

  2. 0058 编写将1元钱兑换成1分,2分,5分的硬币,问有多少种兑换的方法?将他们一一列举出来。...

    问题描述: 编写将1元钱兑换成1分,2分,5分的硬币,问有多少种兑换的方法?将他们一一列举出来. 代码展示: 1 #include<stdio.h>2 #define N 1003 int ...

  3. 现有n个阶梯,你有两种上法,一次走一步或着走两步,问一共有多少种上法

    问现在有N级台阶,你每次可以选择上一步或者上两步,问一共多少种上法? 这是常见的面试题之一,类似的还有生兔子问题,首先我们先来看一看解题的思路,有N级台阶,有两种上法,一次走一步或着一次走两步,如果N ...

  4. SpaceX载人龙飞船宇航员进入空间站 太空之旅前半段完成

    图1:SpaceX载人龙飞船接近国际空间站,准备与其对接 据外媒报道,美国当地时间周日,SpaceX载人龙飞船成功与国际空间站对接,将美国宇航局(NASA)两名宇航员送上了轨道前哨,他们的到来标志着S ...

  5. 一个m * n的网格,从最左上角出发,每次只能向右或者向下移动一格,问有多少种不同的方法可以到达最右下角的格子

    格子路径 题目: 在一个 2×2 的栅格中,从左上角出来,只能向右或向下移动,总共有 6 条路径可以到达栅格的右下角: 求m*n的网格中,有多少条移动路径? 以一个 20×20 的栅格为例,它有137 ...

  6. n级阶梯,每次走一步或两步,问最多有多少种走法

    遇到这道题两次了,现在来总结下. 方法一:运用组合数学的思想.假设在整个过程中,我有k次走了两步,那么剩下的n-2k次我走的都是一步,那么我总的走的步数是k+n-2k.则结果为从n-k里面选了k次走两 ...

  7. 羽毛球拍15元,羽毛球3元,水2元,一共有180元,要求每样最少买一件,问一共有多少种可能

    #a是为了求次数,去掉a就可以查看所有可能 a=1 for p in range(1,12):for b in range(1,60):for w in range(1,90):if p * 15 + ...

  8. 卡特兰数:2N个人排队买电影票,N个人持5元买票,N个人持10元买票.售票处在售票前只有票没有钱,票价5元 ,问有多少种排队方式 能让2N个人顺利买票,并且输出所有排队队列(不会因为找钱问题)

    分析 n = 0 时,队列为空,可以认为只有一种: n = 1 时,队列:5 ,10  共有1种: n = 2 时 ,队列: 5, 10,5,10 5,5,10,10   共有两种 n = 3时, 队 ...

  9. Bailian4077 出栈序列统计【卡特兰数】(vijos P1122)

    问题链接:vijos P1122 出栈序列统计. 出栈序列统计 总时间限制: 100ms 内存限制: 64kB 描述 栈是常用的一种数据结构,有n个元素在栈顶端一侧等待进栈,栈顶端另一侧是出栈序列.你 ...

最新文章

  1. MVVM开发模式MVVM Light Toolkit中使用事件和参数传递
  2. 机房布线的至高境界,美到窒息!
  3. 关于VC向导生成的COM的注册与反注册
  4. 注册MSComm方法
  5. linux禁止修 5在线阅读,linux – 如何在不重新编译内核的情况下禁用CentOS 5.3中的nf_conntrack内核模块...
  6. Java面试题目,java关键字final
  7. cron每2天跑一次_直购直测,进口新极光每2年或34000公里才需要保养一次?
  8. ambari mysql jar_从零开始安装 Ambari (3) -- 安装 Ambari
  9. AcWing 901. 滑雪(记忆化搜索)
  10. Linux常用知识与命令
  11. chrome浏览器控制台执行js脚本
  12. 欧瑞变频器故障码表_变频器常见故障处理.doc
  13. 信度和效度经典例子_信度与效度公式的纠正
  14. 形容等待时间长的句子_形容等待已久的事终于等到句子
  15. 读取NTFS的USN(获取文件的历史操作记录,即使这个文件已被删除)
  16. 计算机为何用二进制而不用十进制,为什么计算机使用二进制而不是十进制?
  17. 华科计算机硕士什么时候能去实习,研究生期间是出去实习还是老老实实做科研?...
  18. LAMP详细架构过程
  19. Python实践-咚咚呛讲师Python进阶教程
  20. Liang-GaRy啃linux书想吐(一)

热门文章

  1. 源码阅读之Java栈的实现
  2. mvc大对象json传输报错
  3. Java基础笔记18
  4. redis windows
  5. [LintCode] 字符串查找
  6. 〔转〕Word域的应用和详解10_域的应用例子
  7. 一起谈.NET技术,WCF的问题和Using语句块
  8. 世界百位首富的共同特质
  9. C# 子窗口修改主窗口的控件
  10. Spring AOP Capability and goals