#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MX=43;
void fnc(){
array<array<ll, MX+5>, MX+5> cmb;
for(int i=0; i<MX+5; i++) cmb[i][0] = 1;
for(int i=1; i<MX+5; i++) for(int j=1; j<=i;j++)
cmb[i][j] = cmb[i-1][j] + cmb[i-1][j-1];
ll sm = 0;
for(int i=3 ; i<=6; i++){
ll w = cmb[6][i] * cmb[MX-6][6-i]; //当たりがi個の組み合わせ数
sm += w;
printf("%d : %6lld\n", i, w);
}
printf("\n%lld / %lld --> %.15f by comb\n",
sm, cmb[MX][6], 1.0*sm/cmb[MX][6]);
}
void fnc2(){
vector<double> dp(8); //dp[あたり数] = 確率
dp[0] =1.0;
for(int i=0; i<6; i++){
vector<double> np(8);
for(int j=0; j<6; j++){
int atr = 6-j; //残り当たり数
np[j+1] += dp[j] * atr/(MX-i);
np[j] += dp[j] * (MX-i-atr)/(MX-i);
}
dp.swap(np);
}
double ans =0;
for(int i=3; i<7; i++) ans +=dp[i];
printf("\n%.15f by dp\n", ans);
}
int main()
{
fnc(); //コンビネーションで求める
fnc2(); //確率DPで求める
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKCmNvbnN0IGludCBNWD00MzsKCnZvaWQgZm5jKCl7CglhcnJheTxhcnJheTxsbCwgTVgrNT4sIE1YKzU+IGNtYjsKCWZvcihpbnQgaT0wOyBpPE1YKzU7IGkrKykgIGNtYltpXVswXSA9IDE7Cglmb3IoaW50IGk9MTsgaTxNWCs1OyBpKyspIGZvcihpbnQgaj0xOyBqPD1pO2orKykgCgkJY21iW2ldW2pdID0gY21iW2ktMV1bal0gKyBjbWJbaS0xXVtqLTFdOwoKCQoJbGwgc20gPSAwOwoJZm9yKGludCBpPTMgOyBpPD02OyBpKyspewoJCWxsIHcgPSBjbWJbNl1baV0gKiBjbWJbTVgtNl1bNi1pXTsgLy/lvZPjgZ/jgorjgYxp5YCL44Gu57WE44G/5ZCI44KP44Gb5pWwCgkJc20gKz0gdzsKCQlwcmludGYoIiVkIDogJTZsbGRcbiIsIGksIHcpOwoJfQoJCQoJcHJpbnRmKCJcbiVsbGQgLyAlbGxkIC0tPiAlLjE1ZiAgYnkgY29tYlxuIiwgCgkJc20sIGNtYltNWF1bNl0sIDEuMCpzbS9jbWJbTVhdWzZdKTsKCQp9Cgp2b2lkIGZuYzIoKXsKCXZlY3Rvcjxkb3VibGU+IGRwKDgpOyAvL2RwW+OBguOBn+OCiuaVsF0gPSDnorrnjocKCWRwWzBdID0xLjA7Cglmb3IoaW50IGk9MDsgaTw2OyBpKyspewoJCXZlY3Rvcjxkb3VibGU+IG5wKDgpOwoJCWZvcihpbnQgaj0wOyBqPDY7IGorKyl7CgkJCWludCBhdHIgPSA2LWo7IC8v5q6L44KK5b2T44Gf44KK5pWwCgkJCW5wW2orMV0gKz0gZHBbal0gKiBhdHIvKE1YLWkpOwoJCQlucFtqXSAgICs9IGRwW2pdICogKE1YLWktYXRyKS8oTVgtaSk7CgkJfQoJCWRwLnN3YXAobnApOwoJfQoJZG91YmxlIGFucyA9MDsKCWZvcihpbnQgaT0zOyBpPDc7IGkrKykgYW5zICs9ZHBbaV07CglwcmludGYoIlxuJS4xNWYgIGJ5IGRwXG4iLCAgYW5zKTsKfQoKCmludCBtYWluKCkKewoJZm5jKCk7ICAvL+OCs+ODs+ODk+ODjeODvOOCt+ODp+ODs+OBp+axguOCgeOCiwoJZm5jMigpOyAvL+eiuueOh0RQ44Gn5rGC44KB44KLCn0K