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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

排队 题解 组合数学+高精度

發(fā)布時(shí)間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 排队 题解 组合数学+高精度 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

因?yàn)閷?shí)在是寫(xiě)不動(dòng)了,所以菜雞頹博客為了信奧發(fā)展的偉大未來(lái)作出一點(diǎn)小小的貢獻(xiàn)

題目描述

某中學(xué)有 n 名男同學(xué),m 名女同學(xué)和兩名老師要排隊(duì)參加體檢。他們排成一條直線,并且任意兩名女同學(xué)不能相鄰,兩名老師也不能相鄰,那么一共有多少種排法呢?(注意:任意兩個(gè)人都是不同的)

輸入格式

只有一行且為用空格隔開(kāi)的兩個(gè)非負(fù)整數(shù) n 和 m,其含義如上所述。
對(duì)于 30%的數(shù)據(jù) n≤100,m≤100
對(duì)于 100%的數(shù)據(jù) n≤2000,m≤2000

輸出格式

輸出文件 output.txt 僅包含一個(gè)非負(fù)整數(shù),表示不同的排法個(gè)數(shù)。注意答案可能很大。

樣例輸入

1 1

樣例輸出

?? 12

題解:
這是一道組合數(shù)學(xué),應(yīng)該說(shuō)是非常明顯。
首先我們需要一個(gè)數(shù)奧生思路開(kāi)始要正確。
我們選擇固定男生和老師,然后將女生插空,貌似如果固定女生的式子會(huì)非常麻煩。我寫(xiě)到一半果斷放棄了
固定男生時(shí)是A(n,n);
固定老師時(shí)分兩種情況:
老師卡在一起,也就是老師一起站在兩個(gè)男生中間,是A(2,2),這時(shí)需要一個(gè)女生站在老師中間,總式子變成A(n,n)*(n+1)*A(2,2)*A(n+2,m-1),m-1在上面。
或者老師沒(méi)有卡在一起,是A(n+1,2),然后女生插空,總式子變成A(n,n)*A(n+1,2)*A(n+3,m).
合并式子,最終是n!*(2*m+n*(n+3))*(n+1)*(n+2)!/(n-m+3)!。
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #define maxn 100010 5 using namespace std; 6 int n,m,a[maxn],b[maxn],c[maxn]; 7 void mult(int a[],int b) 8 { 9 int x=0; 10 for(int i=1;i<=a[0];i++) 11 { 12 int tmp=a[i]*b+x; 13 a[i]=tmp%10; 14 x=tmp/10; 15 } 16 while(x) 17 { 18 a[++a[0]]=x%10; 19 x/=10; 20 } 21 } 22 23 int main() 24 { 25 scanf("%d%d",&n,&m);a[0]=a[1]=1; 26 for(int i=1;i<=n;i++) mult(a,i); 27 mult(a,(2*m+n*(n+3))); 28 mult(a,n+1); 29 for(int i=n-m+4;i<=n+2;i++) mult(a,i); 30 for(int i=a[0];i>0;i--) printf("%d",a[i]); 31 return 0; 32 } 代碼 大概就是這樣。
?

轉(zhuǎn)載于:https://www.cnblogs.com/MouDing/p/11121426.html

總結(jié)

以上是生活随笔為你收集整理的排队 题解 组合数学+高精度的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。