FZU Problem 2132 LQX的作业

来源:互联网 发布:淘宝质量好的皮鞋店 编辑:程序博客网 时间:2024/05/22 04:31

点击打开链接

题意:题目要求选择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;}