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 |
1 | a1, a2 | 1 |
2 | a1, a3 | 1, 2 |
3 | a1, a4 | 1, 2 |
4 | a2, a1 | 1 |
5 | a2, a3 | 1, 2 |
6 | a2, a4 | 1, 2 |
7 | a3, a1 | 2, 1 |
8 | a3, a2 | 2, 1 |
9 | a3, a4 | 2 |
10 | a4, a1 | 2, 1 |
11 | a4, a2 | 2, 1 |
12 | a4, a3 | 2 |
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 .
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!