*****************

*1A了,泪流满面。

*简单,粗暴,但是高效。

******************

#include <cstdio>

#include <cmath>
 
int g[9][50];
double gg[9][50];
 
int main(int argc, char* argv[])
{
int att, def;
for(int i = 1; i <= 6; i++) {
for(int j = 1; j <= 6; j++) {
for(int k = 1; k <= 6; k++) {
for(int a = 1; a <= 6; a++) {
for(int b = 1; b <= 6; b++) {
for(int c = 1; c <= 6; c++) {
for(int d = 1; d <= 6; d++) {
for(int e = 1; e <= 6; e++) {
g[8][i+j+k+a+b+c+d+e]++;
}
g[7][i+j+k+a+b+c+d]++;
}
g[6][i+j+k+a+b+c]++;
}
g[5][i+j+k+a+b]++;
}
g[4][i+j+k+a]++;
}
g[3][i+j+k]++;
}
g[2][i+j]++;
}
g[1][i]++;
}
 
for(int q = 1; q <= 8; q++) {
for(int i = 1, t = q*6, z = (int)pow(6,q); i <= t ;i++) {
gg[q][i] = (double)g[q][i]/z;
}
}
while(scanf("%d%d", &att, &def) != EOF) {
double tol = 0.0;
for(int t = 6*att, i = 2; i <= t; i++) {
for(int j = 1; j < i; j++) {
tol += gg[att][i] * gg[def][j];
}
}
printf("%.16lf\n",tol);
}
return 0;
}
 
 
PS. 还能用dp做,下次再补上~~~