1. 程式人生 > >UVA 10375 Choose and divide(組合數學)

UVA 10375 Choose and divide(組合數學)

Problem D: Choose and divide

The binomial coefficient C(m,n) is defined as
         m!
C(m,n) = --------
         n!(m-n)!
Given four natural numbers pqr, and s, compute the the result of dividing C(p,q) by C(r,s).

The Input

Input consists of a sequence of lines. Each line contains four non-negative integer numbers giving values for 
pqr, and s, respectively, separated by a single space. All the numbers will be smaller than 10,000 with p>=q and r>=s.

The Output

For each line of input, print a single line containing a real number with 5 digits of precision in the fraction, giving the number as described above. You may assume the result is not greater than 100,000,000.

Sample Input

10 5 14 9
93 45 84 59
145 95 143 92
995 487 996 488
2000 1000 1999 999
9998 4999 9996 4998

Output for Sample Input

0.12587
505606.46055
1.28223
0.48996
2.00000
3.99960

題意:給定p,q,r,s。求c(p,q) / c(r, s)。

思路:由於c(n,m)分子和分母數是相等的,所以可以進行一除一乘。就不會超過範圍

程式碼:

#include <stdio.h>

int p, q, r, s, i;
double ans;
int main () {
	while (~scanf("%d%d%d%d", &p, &q, &r, &s)) {
		ans = 1.0;
		if (p - q < q)
			q = p - q;
		if (r - s < s)
			s = r - s;
		for (i = 1; i <= q || i <= s; i ++) {
			if (i <= q) {
				ans = ans * (p - q + i) / i;
			}
			if (i <= s) {
				ans = ans / (r - s + i) * i;
			}
		}
		printf("%.5lf\n", ans);
	}
	return 0;
}


相關推薦

UVA 10375 Choose and divide(組合數學)

Problem D: Choose and divide The binomial coefficient C(m,n) is defined as m! C(m,n) = -------- n!(m-n)! Given four

uva 10375 Choose and Divide

ans std ble 遍歷 bre color ios 素數 and 將要求的數離散為素數的指數,然後遍歷一遍素數表。。。。 #include <cstdio> #include <iostream> #include <cstring&g

UVa 10375 - Choose and divide(唯一分解定理)

ide clas 數組 AI AS lin buffered ring buffere 鏈接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_p

UVa 10375 Choose and divide (唯一分解定理)

divide include n! reg pan gist inline har class 題目 題目大意 已知\(C(m, n) = m! / (n!(m - n)!)\), 輸入整數\(p\), \(q\), \(r\), \(s\)(\(p ≥ q\), \(r

UVA10375-Choose and divide(組合數化簡)

根據定義每個數肯定能化成這樣的形式: p1^a * p2 ^ b * p3 ^ c ……,這裡 p1,p2,……pn都是素數 先快速打出素數表,之後統計沒個素數出現個個數就可以了 14024226 10375 Accepted C++ 0.325 2014-0

Choose and divide UVA - 10375

cstring div n) define all inpu small you sample Choose and divide UVA - 10375 The binomial coefficient C(m, n) is defined as C(m, n) = m

【數論】Choose and Divide, UVa10375 【組合數學】【唯一分解定理】【精度】

唯一分解定理 #include<bits/stdc++.h> using namespace std; int p,q,r,s,prime[10005],cnt,e[10005];boo

Choose and divide(數論)(組合數學

題目大意:給出  p ,q, r, s這四個數,C(m, n) = m! / (m − n)! n!   ,讓你求解   C(p, q)by C(r, s)  ,即兩個階乘相除。 思路:(   p!*

51Nod 1305 Pairwise Sum and Divide | 思維 數學

time inf 最終 範圍 F12 %d com bsp art Output 輸出fun(A)的計算結果。 Input示例 3 1 4 1 Output示例 4first try: #include "bits/stdc++.h" using namespace

1305 Pairwise Sum and Divide數學 ,規律)

sum content %d sort bar mco retext 但是 clu HackerRank 1305 Pairwise Sum and Divide 有這樣一段程序,fun會對整數數組A進行求值,其中Floor表

Choose and Divide UVa10375 題解

質因數 void ostream cto back 直接 -1 display pla   兩個超大組合數相除。解法是分解質因數,用數組記錄每個質因數稱或除的次數,最後直接遍歷數組計算即可 #include<iostream> #include<cst

CF451E Devu and Flowers (組合數學+容斥)

題目大意:給你$n$個箱子,每個箱子裡有$a_{i}$個花,你最多取$s$個花,求所有取花的方案,$n<=20$,$s<=1e14$,$a_{i}<=1e12$ 容斥入門題目 把取花想象成往箱子裡放花,不能超過箱子上限 $n$很小,考慮狀壓 如果去掉$a_{i}$的限制,我們取物品的

HDU 4479 GCD and LCM (組合數學)

#include<bits/stdc++.h> using namespace std; #define debug puts("YES"); #define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++) #def

HDU 4497 GCD and LCM 組合數學

題目思路:首先看題目,用測試資料想到了可以把最大公因數和最小公倍數分解質因數,然後對於每個質因數,例如2,最大公因數有2^1,最小公倍數有2^3,那麼x,y,z分解質因數中要有一個x或y或z有2^1,有一個有2^3,還有一個隨便取一個1~3之間的數,然後A(3,3),

uva10375 Choose and Divide(唯一分解定理)

題意:已知C(m,n)=m! / (n!*(m-n!)),輸入整數p,q,r,s(p>=q,r>=s,p,q,r,s<=10000),計算C(p,q)/C(r,s)。輸出保證不超過10^8,保留5位小數 解題思路: 初步分析,本題時間上基本上沒有太大的限

Choose and divide (分解質因子,組合數相除)

題意: 已知p,q,r,s。求C(p,q) / C(r,s)。 演算法: 利用組合數的計算公式 m! C(m,n) = -------- n!(m-n)! 可以得到C(p,q)  = p!/(q!*(p-q)!) * = p*(p-

UVa 11481 Arrange the Numbers (組合數學+容斥原理)

UVa 11481 Arrange the Numbers 題目大意: 可以將序列1,2,3,...n任意重排,但重排後的前m(m≤n)個位置恰好有k(k≤m)個不變,求方案數除以1000000

codeforces111D. Petya and Coloring(組合數學,計數問題)

targe n) 假設 its 說明 ans 直線 str target 傳送門: 解題思路: 要求一條直線分割矩陣時左右顏色數一樣,那麽就說明一個問題。直線左右移動時是不會改變左右矩陣的顏色集合的。所以說明:2~m-1列的顏色集一定屬於第一列與第m列顏色集的交集。而且

[51nod] 1305 Pairwise Sum and Divide 數學

size ont col 取整 include 次數 lld output ext 有這樣一段程序,fun會對整數數組A進行求值,其中Floor表示向下取整: fun(A) sum = 0 for i = 1 to A.length

CodeForces 785D Anton and School - 2 組合數學

school log cer sin 位置 mem cin typedef pair 題意: 給你一串括號 問你有多少種匹配的子串 就是前半部分都是‘(‘ 後半部分都是‘)‘的子串 思路: 首先我們預處理 當前位置之前有多少左括號 和 當前位置之後有多少右括