UVA - 10375 - Choose and divide (組合數)
來源:程序員人生 發布時間:2015-07-31 07:57:12 閱讀次數:3354次
題目傳送:UVA - 10375
思路:用double存答案,不過要注意是邊乘邊除,這樣不會爆double,還有記得乘的時候要把int轉換成double
AC代碼:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <map>
#include <set>
#include <deque>
#include <cctype>
#define LL long long
#define INF 0x7fffffff
using namespace std;
int main() {
int p, q, r, s;
while(scanf("%d %d %d %d", &p, &q, &r, &s) != EOF) {
double ans = 1;
int len = max(p, r);
for(int i = 1; i <= len; i ++) {
if(i <= q) {
ans *= (p * 1.0 - q + i) / i;
}
if(i <= s) {
ans *= i * 1.0 / (r - s + i);
}
}
printf("%.5lf
", ans);
}
return 0;
}
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈