UESTC - 1168 鳳神與狗
阿新 • • 發佈:2018-03-06
math namespace code org als pro log iostream atom
原題鏈接
鳳神隱居山林,與貓狗為伴。起初,他擁有cc只貓和dd只狗。每天下午他隨機從中選擇一只出去遊玩並且晚上歸來。如果他帶的是狗,則第二天早上狗的數量增加ww只,否則,貓的數量增加ww只。由於鳳神特別鐘愛狗,某些重要的日子他想帶狗出去玩,於是他想知道他在第aa天和第bb天都帶狗出去玩的概率是多少?
Input
第一行包含55個整數:c(0<c≤1000000),d(0<d≤1000000),w(0<w≤1000000),a(0<a<1000000),b(a<b≤1000000)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; }
UESTC - 1168 鳳神與狗