#3396
alternant
Se dau două numere N
și M
urmate de un șir de numere întregi nenule S
de lungime impară N
indexat de la 0
. Asupra acestuia se vor efectua fix M
operații de swap. O operație reprezintă selectarea la întâmplare a doi indici (nu neapărat distincți) din intervalul [0, N – 1]
și interschimbarea elementelor de pe pozițiile respective. Se consideră că șirul este alternant dacă nu există elemente alăturate având același semn. Determinați probabilitatea ca la finalul celei de-a M
-a operații, șirul să fie alternant. (Se garantează că există cel puțin o aranjare a șirului astfel încât acesta să fie alternant). Se poate demonstra că probabilitatea cerută se poate reprezenta sub forma P / Q
unde P
si Q
sunt prime între ele.
Info-Oltenia 2020, Clasele XI-XII
Problema | alternant | Operații I/O |
alternant.in /alternant.out
|
---|---|---|---|
Limita timp | 1 secunde | Limita memorie |
Total: 8 MB
/
Stivă 2 MB
|
Id soluție | #53961806 | Utilizator | |
Fișier | alternant.cpp | Dimensiune | 2.59 KB |
Data încărcării | 16 Noiembrie 2024, 08:46 | Scor / rezultat | 100 puncte |
alternant.cpp: In function 'void computeMat(const int&, const int&, const int&, const int&)': alternant.cpp:61:33: warning: unused variable 'badA3' [-Wunused-variable] int goodA3 = j + 1, badA3 = A - j - 1, goodB3 = B - (A - j - 1), badB3 = A - j - 1; ^ alternant.cpp:61:78: warning: unused variable 'badB3' [-Wunused-variable] int goodA3 = j + 1, badA3 = A - j - 1, goodB3 = B - (A - j - 1), badB3 = A - j - 1; ^ alternant.cpp:57:13: warning: unused variable 'goodA2' [-Wunused-variable] int goodA2 = j - 1, badA2 = A - j + 1, goodB2 = B - (A - j + 1), badB2 = A - j + 1; ^ alternant.cpp:57:48: warning: unused variable 'goodB2' [-Wunused-variable] int goodA2 = j - 1, badA2 = A - j + 1, goodB2 = B - (A - j + 1), badB2 = A - j + 1; ^ alternant.cpp: In function 'void readData(int&, int&, int&, int&)': alternant.cpp:70:26: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d%d", &n, &m); ^ alternant.cpp:74:27: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d", &v[i]); ^
Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
---|---|---|---|---|---|---|
0 | 0 secunde | OK. | 5 | 5 | ||
1 | 0 secunde | OK. | 5 | 5 | ||
2 | 0 secunde | OK. | 5 | 5 | ||
3 | 0 secunde | OK. | 5 | 5 | ||
4 | 0 secunde | OK. | 5 | 5 | ||
5 | 0.164 secunde | OK. | 5 | 5 | ||
6 | 0 secunde | OK. | 5 | 5 | ||
7 | 0.152 secunde | OK. | 5 | 5 | ||
8 | 0.012 secunde | OK. | 5 | 5 | ||
9 | 0.228 secunde | OK. | 5 | 5 | ||
10 | 0.144 secunde | OK. | 5 | 5 | ||
11 | 0.204 secunde | OK. | 5 | 5 | ||
12 | 0.204 secunde | OK. | 5 | 5 | ||
13 | 0.204 secunde | OK. | 5 | 5 | ||
14 | 0.204 secunde | OK. | 5 | 5 | ||
15 | 0.472 secunde | OK. | 5 | 5 | ||
16 | 0.472 secunde | OK. | 5 | 5 | ||
17 | 0.472 secunde | OK. | 5 | 5 | ||
18 | 0.428 secunde | OK. | 5 | 5 | ||
19 | 0.5 secunde | OK. | 5 | 5 | ||
Punctaj total | 100 |
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema alternant face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.