問題はこちら
No.159 刺さらないUSB - yukicoder
確率の計算
P1は「0回目で刺さらずかつ1回目で刺さる確率」なので
最初裏である確率(1-p)×1回ひっくり返して刺さる確率q
P2は「0,1回目で刺さらずかつ2回目で刺さる確率」なので
最初表である確率p×最初刺さらない確率(1-q)×2回ひっくり返して刺さる確率q
よって(1-p)q<p(1-q)qならYESとなる
int main(){ double p,q; scanf("%f%f",&p,&q); puts((1-p)*q<p*(1-q)*q?"YES":"NO"); return 0; }
q≠0なので両辺qで割り
1-p<p-pq
"p≠0なら"両辺pで割り
1/p+q<2
となる
ところで元の不等式はp=0のとき左辺=右辺=0なのでfalseであり、
C言語では1/0.0はinfとなりinf<2はfalseなので、この時も最後の式で良い事がわかる
式は左から評価される処理系依存技でscanfの返り値2を利用すれば次のようにまとめられる
x; float p,q; main(){ x=!puts(scanf("%f%f",&p,&q)>1/p+q?"YES":"NO"); }
66B