#2153
Numim „oglinda” numărului natural nenul a, numărul b, obţinut prin modificarea fiecărei cifre din reprezentarea sa binară, de exemplu pentru a=22(10)=10110(2) se obţine 01001(2)= 9(10)=b.
Cunoscându-se numerele naturale N, K și cele N numere natural nenule, scrieți un program care:
10 corespunzătoare secvenţelor alăturate de exact K cifre binare, parcurse de la stânga la drepta. Dacă ultima secvenţă nu are exact K cifre binare, atunci aceasta nu se va mai lua în considerare.K transformări asupra şirului iniţial, înlocuind la fiecare pas orice termen cu „oglinda” sa. Asupra termenilor care devin zero nu se vor mai efectua alte operații. După efectuarea celor K transformări, să se determine cea mai lungă secvență de numere care au cifra 1 pe aceeași poziție în reprezentarea lor în baza doi. Dacă sunt mai multe astfel de secvențe având lungimea maximă, se va afișa cea mai din stânga.| Problema | Mirror | Operații I/O |
mirror.in/mirror.out
|
|---|---|---|---|
| Limita timp | 0.3 secunde | Limita memorie |
Total: 32 MB
/
Stivă 32 MB
|
| Id soluție | #64193560 | Utilizator | |
| Fișier | mirror.cpp | Dimensiune | 1.89 KB |
| Data încărcării | 22 Aprilie 2026, 12:11 | Scor/rezultat | 100 puncte |
mirror.cpp: In function ‘int main()’: mirror.cpp:47:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<short int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare] 47 | for (i=0; i<bn.size(); i++) | ~^~~~~~~~~~ mirror.cpp:49:9: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation] 49 | if (bn[i]==1) nr=nr+fastexp(2,len-1); len--; | ^~ mirror.cpp:49:47: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’ 49 | if (bn[i]==1) nr=nr+fastexp(2,len-1); len--; | ^~~ mirror.cpp:46:9: warning: unused variable ‘pw’ [-Wunused-variable] 46 | int pw=0,len=k; | ^~ mirror.cpp:66:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::vector<short int> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare] 66 | for (i=0; i<btf.size(); i++) while (btf[i].size()!=lenmx) btf[i].push_back(0); | ~^~~~~~~~~~~ mirror.cpp:66:54: warning: comparison of integer expressions of different signedness: ‘std::vector<short int>::size_type’ {aka ‘long unsigned int’} and ‘short int’ [-Wsign-compare] 66 | for (i=0; i<btf.size(); i++) while (btf[i].size()!=lenmx) btf[i].push_back(0); | ~~~~~~~~~~~~~^~~~~~~ mirror.cpp:70:20: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<std::vector<short int> >::size_type’ {aka ‘long unsigned int’} [-Wsign-compare] 70 | for (j=0; j<btf.size(); j++) | ~^~~~~~~~~~~
| Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
|---|---|---|---|---|---|---|
| 0 | 0.002 secunde | OK. | 10 | 10 | ||
| 1 | 0.001 secunde | OK. | 10 | 10 | ||
| 2 | 0.002 secunde | OK. | 10 | 10 | ||
| 3 | 0.008 secunde | OK. | 10 | 10 | ||
| 4 | 0.011 secunde | OK. | 10 | 10 | ||
| 5 | 0.055 secunde | OK. | 10 | 10 | ||
| 6 | 0.031 secunde | OK. | 10 | 10 | ||
| 7 | 0.088 secunde | OK. | 10 | 10 | ||
| 8 | 0.05 secunde | OK. | 10 | 10 | ||
| 9 | 0.002 secunde | OK. | 10 | 10 | ||
| Punctaj total | 100 | |||||
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Mirror 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ă.