日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/7/14 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hdu5184 给出(和)前半段问后面有多少种加括号方法使合法:类似卡特兰数+逆元模板... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題解說的很好呀==

就是拿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 给出(和)前半段问后面有多少种加括号方法使合法:类似卡特兰数+逆元模板...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。