はまやんはまやんはまやん

hamayanhamayan's blog

Dice and Coin [AtCoder Beginner Contest 126 C]

https://atcoder.jp/contests/abc126/tasks/abc126_c

解説

https://atcoder.jp/contests/abc126/submissions/5476041

シミュレーションしながら、答えを導いていこう。
サイコロで[1,N]のどれが出るかを全探索しよう。
そこから、コインを振って、得点が倍になる場合に限って確率を求める。
最初のサイコロで出る値で全探索すれば、排反なので、総和を取ると答え。

int N, K;
//---------------------------------------------------------------------------------------------------
void _main() {
	cin >> N >> K;
 
	double ans = 0;
	rep(x, 1, N + 1) {
		int y = x;
		double q = 1.0 / N;
		while (y < K) {
			y *= 2;
			q /= 2;
		}
		ans += q;
	}
	printf("%.10f\n", ans);
}