【BZOJ 2134]ラジオずれ

説明

試験のリンク

そこ\(N \)多肢選択問題、最初の\(私は\)複数の選択肢の質問をしている\(a_iを\)オプション、その\(a_iを\)オプション番号れる1,2,3(\、...、 a_iを\)正解する各オプションの確率は同じです。解答用紙をコピーすると、私はコピーが見当違いで期待していなかった、あなたに答えるために:最初の\(私は\)の解答用紙上の道と題しコピー解答\(私は+ 1 \)対象のトラック位置、特に、最初の\ (N- \)解答のコピーのチャネル話題\(1 \)対象チャネルの位置を。あなただけの答えが間違った位置にコピーし、何も間違った質問を、しなかったと仮定すると、いくつかのトピックを見つけることを期待します。

\(2 \当量のn \当量10000000,1 \当量a_iを\当量100000000 \)

溶液

最初と仮定\(私は\)の質問が持っている\(X \)オプション、\(I + 1 \)と題した\(Y \)オプションを選択します。

  1. \(X = Y \) 明らかに最初のケースを行う\(I + 1 \)確率質問\(P = \ FRAC 1} {X} = {\ FRAC 1 {Y}} {\。)
  2. \(X-> Y-の\) 条件付き確率の考え方は、最初に作る\(I + 1 \)最初のタイトルの確率\(私は\)で複数の選択肢の質問\(I + 1 \)実行可能な前提でタイトルを下\(I 1 \ +)タイトル正しい確率は、\(P = \ FRAC {Y } {X}回\ \ FRAC {1} {Y} = \ FRAC {1} {X} \) ;
  3. \(X- <Y-の\) 同じトークンは、最初に行う\(I + 1 \)最初のタイトルの確率\(I + 1 \)で正しい複数の選択肢の質問\(私は\)選択したトピック可能な場合の確率を、次に\(P = \ FRAC {X}、{Y} \タイムズ\ FRAC。1} {X} = {\ FRAC。1 {Y}} {\)

要約すると、最初に作成する\を(I + 1 \)確率の問題である\(P = \ 1 FRAC {} {\最大\ {{I} A_、A_。1} + {I}が\} \)

コード

#include <bits/stdc++.h>
using namespace std;
const int N = 10000000+5;

int n, A, B, C, a[N];
double ans;

int main() {
    scanf("%d%d%d%d%d", &n, &A, &B, &C, a+1);
    for (int i = 2; i <= n; i++)
        a[i] = (1ll*a[i-1]*A+B)%100000001;
    for (int i = 1; i <= n; i++)
        a[i] = a[i]%C+1;
    for (int i = 2; i <= n; i++)
        ans += 1./max(a[i], a[i-1]);
    ans += 1./max(a[n], a[1]);
    printf("%.3lf\n", ans);
    return 0;
}

おすすめ

転載: www.cnblogs.com/NaVi-Awson/p/11247605.html