Rezolvare completă PbInfo #1769 albume

Tudoraș are o pasiune pentru muzică. El deține câte K albume din discografia fiecăreia dintre cele C formații pe care le ascultă. În fiecare zi, Tudoraș extrage la întamplare exact Q albume din colecția sa, pe care le ascultă în cursul zilei.

La finalul zilei, Tudoraș analizează albumele ascultate. Concret, el numără de la câte formații diferite provin cele Q albume alese și își notează această valoare.

Care va fi media aritmetică a valorilor notate, dacă procesul se repetă pentru un număr infinit de zile? Cu alte cuvinte, care este valoarea medie (expected value) a numărului de formații ascultate într-o zi?

Date de intrare

Fișierul albume.in conține pe prima linie trei valori separate prin spațiu: C K Q.

Date de ieșire

Fișierul albume.out trebuie să conțină pe prima linie o singură valoare reală: media aritmetică a valorilor notate de Tudoraș.

Restricții și precizări

  • 1 ≤ C, K ≤ 1000
  • 1 ≤ Q ≤ min(1000, C*K)
  • Pentru teste în valoare de 10 puncte, K = 1.
  • Pentru alte teste în valoare de 10 puncte, Q = C * K.
  • Pentru alte teste în valoare de 20 de puncte, C * K ≤ 10.
  • În fiecare zi, toate albumele au probabilitate egală de a fi extrase.
  • Rezultatul este considerat corect dacă are o eroare absolută de cel mult 10-6.

Exemplul 1

albume.in

2 2 2

albume.out

1.666666667

Exemplul 2

albume.in

232 654 27 

albume.out

25.542102567 

Explicații

În primul exemplu, există două formații, fiecare cu două albume. Numerotăm albumele în următorul fel: 

  • a1 = 1 (primul album al primei formații) 
  • a2 = 1 (al doilea album al primei formații) 
  • a3 = 2 (primul album al celei de-a doua formații) 
  • a4 = 2 (al doilea album al celei de-a doua formații) 

Prin alegerea la întâmplare a două albume, pot apărea următoarele configurații: 


 Albume alese   Formații 
a1, a2 
a1, a3  1, 2 
a1, a4  1, 2 
a2, a1 
a2, a3  1, 2 
a2, a4 1, 2 
a3, a1  2, 1 
a3, a2  2, 1 
a3, a4 
10  a4, a1  2, 1 
11  a4, a2  2, 1 
12  a4, a3 

Suma numărului de formații din fiecare caz este egală cu 1+2+2+1+2+2+2+2+1+2+2+1 = 20.

Cele 12 cazuri au probabilitate egală de a se întâmpla.

Rezultatul este 20 / 12 = 1.(6)

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema albume:

#include <bits/stdc++.h>
using namespace std;
 
double C, K, Q, P = 1.0;
 
int main() {
    ifstream f("albume.in");
    ofstream g("albume.out");
 
    f>>C>>K>>Q;
 
    for(int i=0; i<Q; i++)
        P *= (K * (C-1.0) - i) / (K * C - i);
 
    g<<fixed<<setprecision(9)<<((1.0-P) * C)<<"
";
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #1769 albume

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1769 albume de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!