Gambler's ruin(马尔科夫过程的一个实例)
//Gambler's ruin
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
int main(){
int v1,v2,at,d;
while(~scanf("%d%d%d%d",&v1,&v2,&at,&d) && v1+v2+at+d){
int n1 = 0,n2 = 0;
if(v1%d){
n1 = v1/d+1;
}else{
n1 = v1/d;
}
if(v2%d){
n2 = v2/d+1;
}else{
n2 = v2/d;
}
double ans;
if(at==3){
ans = n1*1.0/(n1+n2);
}else{
double p = at/6.0;
double q = 1-p;
ans = (1-pow(q/p,n1))/(1-pow(q/p,n1+n2));
}
printf("%.1lf\n",ans*100);
}
return 0;
}