Cum Vasilică a terminat liceul, are acum tot timpul pentru pasiunea lui din totdeauna, jocurile pe calculator. Dar, din păcate, a dat de o problemă. În ultimul său joc, RobotAttacks, s-a blocat la un stagiu. El trebuie să calculeze data unui viitor atac al inamicilor roboți, pe baza unui mesaj codificat pe care îl primește. Astfel, noua pasiune pentru Vasilică devine programarea. Ajutați-l pe Vasilică să termine jocul.
Cerințe
Programul va citi de la standard input mesajul, care este un unsigned int (ex. 1110001113, unde 3 este t, iar <111000111> este informația utilă) și valoarea maximă a cheii, “V”, care trebuie să fie mai mare sau egală cu 9.
Programul va afișa la standard output valoarea K, adică cheia găsită în cazul în care mesajul primit respectă protocolul (va ieși cu 0), altfel se va afișa mesajul “Date incorecte!” și va iesi cu cod de iesire != 0.
Decodificare mesaj
- Mesajul este compus doar din cifre de “1” și “0”.
- Pe prima poziție (poziția cea mai din stânga) nu poate fi decât 1. Șirul de “1” și “0”, va fi urmat de un număr t, 2 <= t <= 9. Acesta indică numărul de “1” și “0” care pot intra într-un pachet, iar pachetele sunt așezate, unul peste altul, perfect ordonate pe straturi.
Cel care primește pachetele, citește informația pe coloane și îi asociază, prin calcul de sus în jos în baza 3, un număr. Numerele obținute sunt însumate și rezultă un număr “S”, reprezentând data unui viitor atac al inamicilor. De asemenea, se va construi un număr “U”, prin concatenarea numerelor obșinute citind informația pe coloane. Dacă data depășește valoarea maximă a cheii, “V”, atunci cifrele numărului “U” se adună până când rezultă un număr cel mult egal cu valoarea maximă a cheii, “V”, rezultatul din urmă fiind chiar cheia K. Daca data (S) este mai mică sau egală cu V, valoarea maximă a cheii K, atunci cheia K este S. Voi trebuie să obțineți cheia K.
Exemplu input-output
Se va considera șirul de “1” și “0” multiplu de t-ul dat la finalul mesajului.
Atenție: printați doar cheia finală, adică un int, fără alte caractere(ex. ‘\n’), la fel și în cazul mesajului “Date incorecte!”. NU sunt acceptate soluții cu vectori.
Autori: Arcălianu Alexandra, Grigoraș Marius – Viorel
Data: 17.10.2009