#include <stdio.h>
#define StrongDiceRate 0.4
#define StdDiceRate 0.2
int main(){
double chance[2][200],sum;
int As,A,Ds,D;
int i,j,max,min;
while(1){
printf("Accuracy dices = ");
scanf("%d %d",&As,&A); //As = Strong Accuracy Dices, A = Std Accuracy Dices
printf("Dodge dices = ");
scanf("%d %d",&Ds,&D); //Ds = Strong Defense Dices, D = Std Defense Dices
for(j=0;j<200;j++)
chance[0][j]=chance[1][j]=0;
chance[0][100]=1; //chance[j]=probability for attack success - defense success to be j-100.
max=min=100;
for(i=0;i<As;i++){
max++;
for(j=min;j<=max;j++)
chance[(i+1)%2][j]=chance[i%2][j]*(1-StrongDiceRate)+chance[i%2][j-1]*StrongDiceRate;
}
if(As%2==1)
{
for(j=min;j<=max;j++)
chance[0][j]=chance[1][j];
}
for(i=0;i<A;i++){
max++;
for(j=min;j<=max;j++)
chance[(i+1)%2][j]=chance[i%2][j]*(1-StdDiceRate)+chance[i%2][j-1]*StdDiceRate;
}
if(A%2==1)
{
for(j=min;j<=max;j++)
chance[0][j]=chance[1][j];
}
for(i=0;i<Ds;i++){
min--;
for(j=min;j<=max;j++)
chance[(i+1)%2][j]=chance[i%2][j]*(1-StrongDiceRate)+chance[i%2][j+1]*StrongDiceRate;
}
if(Ds%2==1)
{
for(j=min;j<=max;j++)
chance[0][j]=chance[1][j];
}
for(i=0;i<D;i++){
min--;
for(j=min;j<=max;j++)
chance[(i+1)%2][j]=chance[i%2][j]*(1-StdDiceRate)+chance[i%2][j+1]*StdDiceRate;
}
if(D%2==1)
{
for(j=min;j<=max;j++)
chance[0][j]=chance[1][j];
}
sum=0;
for(j=100;j<=max;j++)
sum+=chance[0][j];
printf("Chance to Hit = %lf\n",sum);
}
}