いい感じの複合問題。この時期の ABC-A としては少し難しめ。
問題概要
正の整数 が与えられる。
以上 以下の整数をランダムに選ぶとき、それが奇数である確率を求めよ。
解法
以上 以下の 個の整数のうち、奇数の個数を とすると、求める確率は
となる。よって、奇数の個数 が求められればよい。
奇数の個数
場合分けして考えてみよう。
- が偶数のとき:奇数は 個となる
- たとえば のとき、 のうち、奇数は の 2 個
- が奇数のとき:奇数は 個となる
- たとえば のとき、 のうち、奇数は の 3 個
これらをまとめて、C++ では (N + 1) / 2
個と書ける。 が偶数の場合であっても、小数点以下を切り捨てると に一致することに注意しよう。
コード
さらにコードを書くときには、小数点以下をちゃんと出力するように気をつけよう。
#include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; int m = (N + 1) / 2; cout << fixed << setprecision(10) << double(m) / N << endl; }