Responsabili: Cosmin Boacă Florin Avram Călin Cruceru
Termen de predare: To be decided
Florin și-a descoperit de curând pasiunea pentru teoria numerelor. După îndelungi cercetări el a descoperit că există perechi de numere (a, b) cu o proprietate interesantă:
SumDiv(a) = b si SumDiv(b) = a unde
SumDiv(X) = suma divizorilor lui X care sunt mai mici ca X
Fiind foarte încântat de numerele descoperite Florin a vrut să-i arate lui Cosmin o listă cu toate perechile de numere mai mici decât K . Totuși, Florin nu a fost atent și a pierdut lista cu numerele iar acum voi va trebui să-l ajutați să o refacă. În schimbul ajutorului vostru Florin o să vă răsplătească oferindu-vă 20 de puncte din tema la PC.
Pe prima linie se va regăsi numărul K.
K
Pe prima linie se va găsi numărul N de perechi de forma (a, b) care resepctă proprietatea descrisă mai sus Pe următoarele N linii se vor regăsi perechile (ai, bi), ai < bi sortate în ordinea crescătoare a numărului ai, iar în caz de egalitate în ordinea crescătoare a numărului bi
N (a0, b0) (a1, b1) (a2, b2) . . . (aN, bN)
După recuperarea perechilor de numere pierdute Cosmin și Florin își pun tot mai multe întrebări legate de numere. Printre acestea se numără și următoarea întrebare:
Câte palindroame mai mici decât X se pot scrie ca produs de 2 numere de P cifre ?
Un palindrom este un număr care se citește la fel și de la stânga la dreapta și de la dreapta la stânga, de exemplu 121, 2222, 2442
Pe prima linie se vor găsi numerele P, X.
P X
Numărul de numere mai mici ca X care sunt palindroame și se pot scrie ca produs de 2 numere de P cifre.
0 < X < 2 ^ 63
0 < P < 4
Cosmin si Florin au descoperit un nou joc. Ei au un teren de luptă de 8×8 codificat sub forma unui număr pe 64 de biți (unsigned long long). Pe terenul de luptă se află soldați (codificați cu bit-ul 1) și celule libere (codificate cu bit-ul 0) .
7 = 0000000000000000000000000000000000000000000000000000000000000111
Codifică harta următoare
Hartă pentru valoarea 7 | |||||||
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
Cosmin și Florin mută alternativ câte un soldat dintr-o celulă a hărții intr-o altă celulă a hărții. Dacă un soldat este mutat într-o celulă în care se află alt soldat se vor lupta intre ei, iar ambii vor dispărea de pe teren. Mutările făcute sunt codificate sub forma unui număr întreg astfel:
Numărul 2655 (baza 10) = 101001011111 (baza 2) reprezinta o codificarea a următoarei mutări pe hartă:
poziția curentă: (011, 111) → (3, 7)
poziția în care soldatul va fi mutat (101, 001) → (5, 1)
Fiind dată o hartă inițiala și o lista de mutări codificate ca în exemplul anterior Cosmin și Florin vă roagă să afișați configurația finală a hărții sub forma unui număr pe 64 de biți. Ei vă vor recompensa cu 40 de puncte dacă reușiți să afișați configurația finală corect.
Pe prima linie se va găsi un număr pe 64 de biți reprezentând configurația inițială a hărții.
Pe următoarea linie se va afla un număr N, reprezentând numărul de mutări făcute de soldați.
Pe următoarele N linii se vor afla numere întregi reprezentând codificările mutărilor.
ConfigurațieHartă N mutare1 mutare2 . . . mutareN
Configurația finală a jocului după ce au fost aplicate cele N mutări.
ConfigurațieFinală
Input:
7 4 3647 (muta de la (7,7) la (7,0)) 3710 (muta de la (7,6) la (7,1)) 3641 (muta de la (7,1) la (7,0)) 1133 (muta de la (5,5) la (2,1))
Output:
4
Explicație
Tema va fi trimisă folosind vmchecker
După cum probabil ați observat task-urile au un total de 80p. Celelalte 20p se vor acorda pentru coding style.
Formatul arhivei va fi următorul:
Arhiva trebuie să fie de tipul zip.
Lipsa fișierului README se depunctează cu 10p.
Inputul pentru TOATE task-urile va fi citit de la stdin (tastatura) iar output-ul va fi afișat la stdout (ecran).
Dacă nu rezolvați un anumit task regulile build-tX / run-tX corespunzătoare task-ului respectiv trebuie să apară in Makefile, chiar dacă ele nu vor face nimic.