#include typedef long long ll; using namespace std; #define DUMP(x) cout << #x << " = " << (x) << endl; #define FOR(i, m, n) for(ll i = m; i < n; i++) #define IFOR(i, m, n) for(ll i = n - 1; i >= m; i-- ) #define REP(i, n) FOR(i,0,n) #define IREP(i, n) IFOR(i,0,n) #define FOREACH(x,a) for(auto& (x) : (a) ) #define ALL(v) (v).begin(), (v).end() #define SZ(x) ll(x.size()) int main(){ ll N, K; cin >> N >> K; // px[i][j] = イカサマサイコロをi個振り,出た目の和がjとなる確率 vector> px(K+1, vector(6*K+1,0.0)); px[0][0] = 1.0; REP(i,K) REP(j,6*i+1) FOR(k,4,7){ px[i+1][j+k] += px[i][j]/3.0; } // py[i][j] = 公平なサイコロをi個振り,出た目の和がjとなる確率 vector> py(N+1, vector(6*N+1,0.0)); py[0][0] = 1.0; REP(i,N) REP(j,6*i+1) FOR(k,1,7) { py[i+1][j+k] += py[i][j]/6.0; } double ans = 0.0; FOR(x,N+3*K,6*N+1){ // 太郎 = xとなる確率,次郎 < xとなる確率 double taro = 0.0, jiro = 0.0; FOR(y,1,x){ jiro += py[N][y]; } FOR(i,4*K,6*K+1) if(N-K<=x-i && x-i<=6*(N-K)){ taro += px[K][i] * py[N-K][x-i]; } ans += taro * jiro; } cout << fixed << setprecision(10) << ans << endl; }