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 ≤ 10001 ≤ 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!