/* -*- coding: utf-8 -*- * * 425.cc: No.425 ジャンケンの必勝法 - yukicoder */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; /* constant */ const double DELTA = 1e-8; /* typedef */ typedef pair pdd; /* global variables */ /* subroutines */ /* main */ int main() { double p, q; cin >> p >> q; p /= 100, q /= 100; double wp = 1.0 / 3, lp = 1.0 / 3; queue qq; qq.push(pdd(1.0 / 3, p)); while (wp + lp < 1.0 - DELTA && ! qq.empty()) { pdd u = qq.front(); qq.pop(); double &ud = u.first, &up = u.second; // use double d0 = ud * up / 2; if (d0 > 0.0) { wp += d0; qq.push(pdd(d0, max(up - q, 0.0))); } // do not use double d1 = ud * (1.0 - up) / 3; if (d1 > 0.0) { wp += d1; lp += d1; qq.push(pdd(d1, min(up + q, 1.0))); } } printf("%.7lf\n", wp); return 0; }