且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

FZU Problem 2132 LQX的作业

更新时间:2021-08-04 12:14:33

点击打开链接

题意:题目要求选择n个0~1之间的数拍完序之后第m个小于等于x的概率

思路:1~0直接选择一个数小于等于x的概率为x,那么选择i个数都小于等于x的概率为x^i。因此,要求第m个数小于等于x,我们可以知道m~n的数也有可能小于等于x,只要枚举m~n求和即可

代码:

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

int n , m;
double x;

double get(int a){
    double sum = 1;
	int j = n;
	for(int i = 1 ; i <= a ; i++ , j--)
	    sum *= j;
    for(int i = 1 ; i <= a ; i++)	
		sum /= i;
	return sum;
}

double solve(){
    double ans = 0;
	for(int i = m ; i <= n ; i++)
        ans += get(i)*pow(x,i)*pow(1-x,n-i);
	return ans;
}

int main(){
    int cas;
	scanf("%d" , &cas);
	while(cas--){
		scanf("%d%d%lf" , &n , &m , &x);
		printf("%.4lf\n" , solve());
	}
	return 0;
}