Se va prezenta în continuare un limbaj minimal de programare fictiv: minishell
.
Documentație
Variabile
Acest limbaj admite 26 de variabile, notate: .
La începutul unui program, toate variabilele sunt inițializate cu .
Într-un program valid, variabilele pot reține doar valori întregi din intervalul .
Operații
- Atribuire constantă:
- Atribuie unei variabile oarecare o valoare constantă.
- Exemple:
a=6
,t=0
,z=2147483647
; - Valoarea constantă atribuită trebuie să fie cuprinsă în intervalul .
- Atribuire și adunare:
- Schimbă valoarea unei variabile cu suma dintre aceasta și o altă variabilă la alegere.
- Exemple:
a+=b
,t+=c
,m+=m
; - Variabilele folosite în această operație trebuie să aparțină celor menționate mai sus.
Exemplu de program
a=1
c+=a
b=2
b+=c
c+=c
a=7
După rularea acestui program, conține valoarea , conține valoarea , conține valoarea , și variabilele conțin valoarea .
Cerință
Se dă un vector . Să se construiască un program minishell
care folosește cât mai puține atribuiri constante și care, prin rularea sa, face ca variabilele să conțină valorile .
Date de intrare
Fișierul de intrare minish.in
va conține numerele .
Date de ieșire
Fișierul de ieșire minish.out
va conține un program minishell
corect alcătuit, care rezolvă cerința. Programul afișat poate conține linii goale, dar nu are voie să conțină spații.
Restricții și precizări
- .
- Fiecare linie afișată trebuie sa conțină exact o singură operație. De asemenea, ea trebuie să nu conțină spații.
- Se garantează că cel puțin o valoare dintre este nenulă.
- Se poate demonstra că întotdeauna există o soluție validă care respectă restricțiile.
- Notăm cu cnt numărul de elemente nenule din vectorul .
# | Scor | Restricții |
---|---|---|
1 | 5 | |
2 | 15 | Cel puțin una dintre valorile este 1 |
3 | 10 | , |
4 | 10 | |
5 | 10 | |
6 | 15 | |
7 | 35 | Fără restricții suplimentare. |
Punctare
Problema admite punctaje parțiale. Punctajul procentual pentru un test este dat de formula
unde reprezintă numărul de atribuiri constante din program, și reprezintă numărul de linii de cod al programului din output.
Veți primi punctaj pe un test numai dacă:
- Programul este corect alcătuit.
- După execuția întregului program, variabilele conțin valorile cerute.
Exemplu
minish.in
1 2 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
minish.out
a=1
b+=a
b+=a
c+=a
c+=a
c+=a
z+=a
Explicație
Acesta reprezintă un program valid care rezolvă problema.