UVA 10491 Cows and Cars 数学 概率

Posted FriskyPuppy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVA 10491 Cows and Cars 数学 概率相关的知识,希望对你有一定的参考价值。

  题目链接: https://vjudge.net/problem/UVA-10491

  题目描述: 有a头牛, b辆车, 在你的一次选择后主持人会为你打开C扇有牛的门并问你换门还是不换门, 输出总是换门情况下可以获得车的概率

  解题思路: 我现在还没有写代码......我不知道我的思路对不对, 但是先说一下, 我们可以分情况来讨论, 然后分情况乘上获得换门情况下获得车的概率, 也就是全概率公式, 情况分成两种, 一开始指着车, 和一开始指着牛 , res = a/(a+b) * b/(a+b-c-1)    +     b/(a+b) * (b-1)/(a+b-c-1), 输出即可, 这是我的思路

  代码: 

技术分享
#include <iostream>
#include <cstdio>
#include <string>
#include <vector>
#include <cstring>
#include <iterator>
#include <cmath>
#include <algorithm>
#include <stack>
#include <deque>
#include <map>
#define lson l, m, rt<<1
#define rson m+1, r, rt<<1|1
#define mem0(a) memset(a,0,sizeof(a))
#define meminf(a) memset(a,-0x3f,sizeof(a))
#define fi(n) for(i=0;i<n;i++)
#define fj(m) for(j=0;j<m;j++)
#define sca(x) scanf("%d",&x)
#define ssca(x) scanf("%s",x)
#define scalld(x) scanf("%I64d",&x)
#define print(x) printf("%d\n", x)
#define printlld(x) printf("%I64d\n",x)
#define de printf("=======\n")
#define yes printf("YES\n")
#define no printf("NO\n")
typedef long long ll;
using namespace std;

int main() {
    int a, b, c;
    while( scanf( "%d%d%d", &a, &b, &c ) ==  3 ) {
        //a/(a+b) * b/(a+b-c+1)    +     b/(a+b) * (b-1)/(a+b-c+1)
        double sum = double(a+b);
        double mother = double(sum-c-1);
        double res = double(a)/sum * (double)b/mother + double(b)/sum * double(b-1)/mother;
        printf( "%.5lf\n", res );
    }
    return  0;
}
View Code

  思考: 思路对了, 这种签到题再不对可就废了........好好学数学啊........

以上是关于UVA 10491 Cows and Cars 数学 概率的主要内容,如果未能解决你的问题,请参考以下文章

uva 10491 Cows and Cars

UVA 10491 Cows and Cars 数学 概率

UVa 10491 Cows and Cars (条件概率)

Uva10491 Cows and Cars 迁移自洛谷博客

uva-10491-经典问题

UVa 10491 奶牛和轿车(全概率公式)