Choose and divide(數論)(組合數學)
題目大意:給出 p ,q, r, s這四個數,C(m, n) = m! / (m − n)! n! ,讓你求解 C(p, q)by C(r, s) ,即兩個階乘相除。
思路:( p!*s!*(r-s)! ) /( q!*(p-q)!*r! )
篩法求素數,唯一分解定理,用函式實現,從而求其各種階乘,程式碼如下
#include<iostream>//唯一分解定理 #include<cstdio> #include<cstring> #include<cmath> using namespace std; const int maxn = 1000005; int prime[maxn],flag[maxn],e[maxn],num=0; //篩法求素數 void Init() { for(int i=2;i<=maxn;i++) { if(flag[i]) continue; prime[num++]=i; for(int j=2;i*j<=maxn;j++) flag[i]=1; } } //計算因子的總個數 void add_integer(int n,int d) { for(int i=0;i<num;i++) { while(n%prime[i]==0) { n/=prime[i]; e[i]+=d;//因為其指數為d,所以每個因子的指數為d } if(n==1) break; } } //計算階乘和除以階乘 void add_factorial(int n,int d) { for(int i=1;i<=n;i++) add_integer(i,d); } int main() { Init(); int p,q,r,s; while(~scanf("%d%d%d%d",&p,&q,&r,&s)) { memset(e,0,sizeof(e)); add_factorial(p, 1); add_factorial(q, -1); add_factorial(p-q, -1); add_factorial(r, -1); add_factorial(s, 1); add_factorial(r-s, 1); double ans = 1.0; for(int i=0;i<num;i++) ans*=pow(prime[i],e[i]); printf("%.5f\n",ans); } return 0; }
相關推薦
Choose and divide(數論)(組合數學)
題目大意:給出 p ,q, r, s這四個數,C(m, n) = m! / (m − n)! n! ,讓你求解 C(p, q)by C(r, s) ,即兩個階乘相除。 思路:( p!*
【數論】Choose and Divide, UVa10375 【組合數學】【唯一分解定理】【精度】
唯一分解定理 #include<bits/stdc++.h> using namespace std; int p,q,r,s,prime[10005],cnt,e[10005];boo
Codeforces 689E Mike and Geometry Problem(組合數學)
題意: 給你n個x軸上的線段,在其中選k個線段,對於所有的可能方案,總共有多少點次被覆蓋,也就是說同一個點如果被不同的方案所覆蓋還是要被算在答案裡的。 這個題首先我們要把線段的端點離散化,用map就可以,對於某一段,我們可以算出被多少條線段覆蓋,假
A - Dogs and Cages HDU - 6243(組合數學)
col class div 所有 思路 clu ac代碼 cage 化簡 題意:在1—n的數字,放入編號為1—n的框中,每個框只放一個數字,問數字與所放的框的編號不同的個數的期望值。 思路:在1—n中任選一個數字,設為k 那麽 k 排到非k編號的框中的方案數為 n!-(
HihoCoder1639 : 圖書館([Offer收割]編程練習賽36)(組合數學)
其中 log 排列 需要 相同 clas pre 整數 合數 描述 東方圖書館中有n種書,其中第i(1<=i<=n)種有a[i]本,同一種的兩本書我們認為是相同的。 東方圖書館將要搬家,現在需要把所有書排成一列。問有多少種排列。 東方圖書館並不關心具體
1119 機器人走方格 V2 (組合數學)
費馬小定理 a* inpu 結果 using F12 color str pre M * N的方格,一個機器人從左上走到右下,只能向右或向下走。有多少種不同的走法?由於方法數量可能很大,只需要輸出Mod 10^9 + 7的結果。 Input 第1行,2個數M,
N - Binomial Showdown (組合數學)
rmi size iat 代碼 ble sample con The 思路 Description In how many ways can you choose k elements out of n elements, not taking order into acc
Rikka with Prefix Sum(組合數學)
時間 分享圖片 ima top long pla res hang nal Rikka with Prefix Sum 題目描述 Prefix Sum is a useful trick in data structure problems. For exam
數組(組合數學)
span 100% 簡單 ios 格式 題意 ... clu using 數組(數學) 【問題描述】 fabdec 有?個長度為 n 的數組 \(a[]\)(下標 1-n), 初始時都是 0。 fabdec 隨機了?個 1 到 n 的隨機數 x,並且把 \(a[x]++\)
【BZOJ1485】[HNOI2009]有趣的數列(組合數學)
sin printf fin std 個數 有趣 clu using -i 【BZOJ1485】[HNOI2009]有趣的數列(組合數學) 題面 BZOJ 洛谷 題解 從小往大填數,要麽填在最小的奇數位置,要麽填在最小的偶數位置。 偶數位置填的數的個數不能超過奇數位置填的數
poj1496 Word Index / poj1850 Code(組合數學)
poj1850 Code 題意:輸出若干個給定的字串($length<=10$)在字典序中的位置,字串中的字母必須嚴格遞增。 讀取到非法字串時,輸出“0”,終止程式。(poj1496:繼續讀取) 我們分成2種情況討論字典序小於給定字串的字串個數 1.長度比給定字串小 其實長度為$i$
Newcoder 109 C.運算元(組合數學)
Description 給定長度為 n n n的陣列
hdu2082找單詞解題報告---母函式(組合數學)
找單詞 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 10817
【CodeForces - 340C】Tourist Problem (組合數學)
Iahub is a big fan of tourists. He wants to become a tourist himself, so he planned a trip. There are n destinations on a straight road th
Newcoder 144 C.Generation I(組合數學)
Description 初始有nnn個空集編號為111~nnn,nnn次操作,第iii次操作會對所有編號介於[i,n][i,n][i,n]之間的集合插入一個介於[1,m][1,m][1,m]之間的整數x
Newcoder 148 D.Rikka with Prefix Sum(組合數學)
Description 給出一個長度為nnn的序列AAA,初始為000,有mmm次操作,操作分三種: 1LRw:1\ L\ R\ w:1LRw:區間[L,R][L,R][L,R]均加上www 2:2:2
【NEUQ2083】Travel(組合數學)
題目連結 2083: Travel 描述 題目描述: 魔方國有nn座城市,編號為1\sim n1∼n。城市之間通過n-1n−1條無向道路連線,形成一個樹形結構。 瀾瀾打算在魔方國進行mm次旅遊,每次遊覽至少一座城市。為了方便,每次旅遊遊覽的城市必須是連通的。此外,瀾
2018.10.04 NOIP模擬 排隊(組合數學)
描述 在成都某中學有m個男生與n個女生排隊,這個學校的女生比較古怪,從某個位置(包含這個位置)開始往前數,男生的數量超過了女生的數量,女生會感覺不安全,於是會大叫起來,為了構建和諧校園,安排隊伍時應該避