ConcursC++17

banda

Pe o masă orizontală se află o bandă super-flexibilă, formată din 2n2^n pătrăţele de latură 11 cm. Grosimea benzii este de 11 mm. Pătrăţelele sunt numerotate de la stânga la dreapta de la 11 la 2n2^n. Această bandă se poate plia în două, suprapunând o parte peste cealaltă (stânga peste dreapta sau invers). Astfel, anumite poziţii se suprapun şi se obţine grosime dublă şi lungime 2n−12^{n-1} cm. Banda obţinută se poate plia iar în două. Acest procedeu se repetă de nn ori, până se obţine grosimea 2n2^n mm şi lungimea 11 cm (adică toată pătrăţelele se vor suprapune, formând o singură coloană).

Folosind o pioneză, vom fixa de masă pătrăţelul kk al benzii şi aplicăm procedeul de pliere descris mai sus, obţinând astfel o coloană a cărei bază este pătrăţelul kk. În cadrul acestei coloane vom numerota poziţiile pătrăţelelor de jos în sus de la 11 la 2n2^n).

Există două tipuri de interogări posibile:

  1. Dat fiind un pătrăţel (să-l numim pătrăţel special), să se determine poziţia lui finală (pe coloană).
  2. Dată fiind poziţia finală a pătrăţelului special, să se determine numărul său

De exemplu, pentru n=3n=3, şi k=5k=5 vom obţine.

Figura 1 din enunțul original al problemei banda.Figura 1 din enunțul original al problemei banda.Mărește schema ↗

Cerinţă

Date fiind valorile nn şi kk, scrieţi un program care răspunde la o interogare de tipul 11 sau de tipul 22.

Date de intrare

Fişierul banda.in conţine 44 linii. Pe prima linie este scris numărul natural nn. Pe a doua linie este scris numărul natural kk, reprezentând poziţia pătrăţelului fixat. Pe cea de a treia linie este scrisă o cifră cc care poate fi 11 sau 22, indicând tipul interogării. Dacă cifra cc este 11 pe cea de a patra linie este scris numărul natural ss reprezentând numărul pătrăţelului special. Dacă cifra cc este 22 pe cea de a patra linie este scris un număr natural ff reprezentând poziţia finală a pătrăţelului special.

Date de ieşire

Fişierul banda.out va conţine o singură linie pe care va fi scris un număr natural reprezentând rezultatul interogării

Restricții și precizări

  • 2≤n≤302 \leq n \leq 30
  • 1≤k,s,f≤2n1 \leq k, s, f \leq 2^n
  • Pentru 30%30\% dintre teste n≤7n \leq 7. Pentru 50%50\% dintre teste c=1c=1

Exemplul 1

banda.in

3
5
1
2

banda.out

6

Explicație

În exemple, banda de lungime 23=82^3=8 cm este fixată de masă pe poziţia 55.
În primul exemplu, trebuie să aflăm poziţia finală a pătrăţelului 22 (aceasta este 66).

Exemplul 2

banda.in

3
5
2
4

banda.out

8

Explicație

În al doilea exemplu, se ştie poziţia finală 44, se cere numărul pătrăţelului special (88).

Sursă și autori

ONI 2008, clasele 10. Szabo Zoltan.

Enunț din Kilonova, sub licența CC-BY-NC-SA-4.0, conform politicii sursei. Adaptări de prezentare și tipografie. Exemplele, formulele și figurile originale sunt păstrate.

RÂNDUL TĂU

Trimite o soluție

Editor de cod

Setul original de teste și regulile de punctare sunt în curs de verificare. Trimiterea pentru evaluare va fi disponibilă după această verificare.

Se verifică autentificarea…

Un pas, apoi următorul.Înapoi sus ↑