UESTC

原题链接

凤神隐居山林,与猫狗为伴。起初,他拥有cc只猫和dd只狗。每天下午他随机从中选择一只出去游玩并且晚上归来。如果他带的是狗,则第二天早上狗的数量增加ww只,否则,猫的数量增加ww只。由于凤神特别钟爱狗,某些重要的日子他想带狗出去玩,于是他想知道他在第aa天和第bb天都带狗出去玩的概率是多少?

Input

第一行包含55个整数:c(0<c1000000)d(0<d1000000)w(0<w1000000)a(0<a<1000000)b(a<b1000000)c(0<c≤1000000),d(0<d≤1000000),w(0<w≤1000000),a(0<a<1000000),b(a<b≤1000000)

Output

答案用最简分数表示,x/yx/y,xx为分子,yy为分母。

Sample Input

1 1 1 1 2

Sample Output

1/3 

分析:
参考自:http://blog.csdn.net/code12hour/article/details/46669143
原博文写得很清楚,公式列出来了。我只是在这里写写自己的理解,加深印象。
首先求第i天带狗出门的概率。设h(i,j)表示前i天中,有j天带的是狗的概率。那么,第i天带狗出门的概率pi等于前i天结束后所有可能的狗的数目再除以猫狗的总数。
第i+1天带狗出门的概率就是前i-1天的各种情况加上第i天带狗或带猫。这里就是我认为的需要理解的地方,接下来看上面链接的求证过程就好,一定能看懂的了。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long LL;

int main(){
    int c, d,w,a,b;
    scanf("%d%d%d%d%d",&c,&d,&w,&a,&b);
    LL x = 1LL*d*(d+w);
    LL y = 1LL*(c+d)*(c+d+w);
    LL g = __gcd(x,y);
    printf("%lld/%lld",x/g,y/g);
    return 0;
}
 
原文地址:https://www.cnblogs.com/fht-litost/p/8516567.html