SLang este o versiune a aplicației Scratch care pune la dispoziție șapte instrucțiuni de tip , , , , , , prezentate în imaginea alăturată.
Un program corect este o succesiune de instrucţiuni care respectă următoarele reguli:
- Începe cu o instrucțiune de tip şi se termină cu o instrucțiune de tip .
- Între instrucţiunea de tip şi instrucţiunea de tip vor exista una, două sau mai multe instrucţiuni de tipurile , , , sau , fără a utiliza două instrucţiuni de acelaşi tip; fiecare dintre aceste instrucţiuni poate să conţină alte instrucţiuni, conform cu regulile specificate.
- Corpul unei instrucțiuni de tip poate conține una sau două instrucțiuni de mișcare (adică de tip sau ) și nu poate conține instrucțiuni de alt tip.
De exemplu:
- Fiecare dintre cele două ramuri ale unei instrucțiuni de tip (ramura daca şi ramura daca nu) poate conține una sau două instrucțiuni de tip sau și nu poate conține instrucțiuni de alt tip.
- Corpul unei instrucțiuni de tip I6 poate conține una, două sau mai multe instrucţiuni de tipurile , , , sau , fără a utiliza două instrucţiuni de acelaşi tip; similar, fiecare dintre aceste instrucţiuni poate să conţină alte instrucţiuni, conform cu regulile specificate.
Nivelul de imbricare al unui program corect va fi egal cu numărul de instrucţiuni de tip existente în program.
Exemplu de program corect cu trei instrucțiuni de tip (program cu nivelul de imbricare ). | Exemplu de program incorect deoarece o instrucțiune de tip nu poate conține o instrucțiune de tip . |
---|---|
Cerinţă
Dat fiind numărul natural , reprezentând nivelul de imbricare, scrieţi un program care să rezolve următoarele cerinţe:
- determină numărul de programe corecte distincte cu nivelul de imbricare ;
- determină numărul minim de instrucțiuni și respectiv numărul maxim de instrucțiuni ce pot exista într-un program corect cu nivel de imbricare .
Date de intrare
Fișierul de intrare slang.in
conține pe prima linie un număr natural reprezentând cerinţa care trebuie să fie rezolvată ( sau ).Pe cea de a doua linie se află numărul natural , reprezentând nivelul de imbricare.
Date de ieșire
Dacă , atunci se va rezolva numai cerința , caz în care pe prima linie a fișierului slang.out
va fi scris un număr natural reprezentând ultimele șase cifre ale numărului de programe corecte distincte care au nivelul de imbricare K.
Dacă , atunci se va rezolva numai cerința . În acest caz, fișierul de ieșire slang.out
va conține pe prima linie două numere naturale separate printr-un spațiu, reprezentând numărul minim de instrucțiuni, respectiv numărul maxim de instrucțiuni ale unui program corect cu nivel de imbricare .
Restricții și precizări
- Două programe sunt distincte dacă în succesiunile de instrucţiuni corespunzătoare există cel puţin o poziţie pe care se află instrucţiuni de tipuri diferite.
- Se garantează că, pentru datele de test, prima dintre cele cifre cerute, este nenulă.
- Pentru rezolvarea corectă a fiecărei cerinţe se acordă de puncte.
Exemplul 1
slang.in
1
0
slang.out
8674
Explicație
Cerinţa este .
Există de programe corecte distincte cu nivelul de imbricare .
Exemplul 2
slang.in
2 0
slang.out
3 12
Explicație
Cerinţa este .
Numărul minim de instrucţiuni dintr-un program corect cu nivelul de imbricare este . Un exemplu de astfel de program este:
Numărul maxim de instrucţiuni dintr-un program corect cu nivelul de imbricare este . Un exemplu de astfel de program este: