
Ana și Ecaterina se plictisesc. În cei de ani de când bântuie Padurea Codrilor Întunecați, singura lor distracție sunt rarii călători rătăciți. Așadar, ele s-au apucat de informatică.
După ce au învățat de concepte precum Object Oriented Programming și Data Oriented Programming, cele două au inventat paradigma de Comment Oriented Programming. Un program se numește comment-complet dacă poate evalua orice funcție prin comentarea (ștergerea) unor linii de cod.
Pentru a testa noul concept, cele două vor să creeze un program comment-complet care să evalueze polinoame. Își propun să rezolve următorul scenariu:
- Ana alege un număr , pe care îl spune Ecaterinei.
- Ecaterina îi spune Anei un program comment-complet pentru polinoamele de grad .
- Ana alege un polinom de grad , cu coeficienții numere naturale, pe care îl spune Ecaterinei.
- Ecaterina îi spune Anei care linii din programul ei trebuie comentate, pentru ca programul obținut să calculeze .
Instrucțiunile permise în program sunt:
$VAR1 = $VAR2 [+-*] $VAR3}-- Valoarea variabilei$VAR1devine suma / diferența / produsul variabilelor$VAR2și$VAR3;$VAR1 = $VAR2 [+-*] A-- Valoarea variabilei$VAR1devine suma / diferența / produsul variabilei$VAR2și numărul naturalA;$VAR1 = A-- Valoarea variabilei$VAR1devine numărul naturalA;
Variabilele pot avea orice nume format din litere, cifre și underscore ("_"), și există două variabile speciale:
$X: Variabila reprezintă valoarea în care dorim să evaluăm polinomul .$Y: După executarea programului, această variabilă trebuie să fie egală cuP($X).
Interacțiune
Întâi citiți gradul al polinomului.
După aceea, afișați pe o linie , reprezentând numărul de instrucțiuni, urmat de linii, programul comment-complet.
După ce ați afișat programul (doar după), veți putea citi valorile , coeficienții polinomului .
După ce ați citit polinomul , afișați , numărul de linii de comentat, urmat de valori, indicii linilor (indexate de la ).
Atenție: Nu uitați să dați flush la stdout cu cout.flush() (C++) sau fflush(stdout) (C).
Restricții și precizări
- .
- (Important).
- Programul generat poate avea cel mult operații.
Subtask-uri
- ( de puncte) și .
- ( de puncte) și .
- ( de puncte) .
- ( de puncte) Nicio constrângere suplimentară.
Exemplul 1
Notă: Programul afișat în acest exemplu este comment-complet numai pentru polinoame cu coeficienții cel mult .
stdin |
stdout |
|---|---|
1 |
|
8 |
|
$Y0 = 0 |
|
$Y0 = 1 |
|
$Y0 = 2 |
|
$Y1 = 0 |
|
$Y1 = 1 |
|
$Y1 = 2 |
|
$Y1 = $Y1 * $X |
|
$Y = $Y0 + $Y1 |
|
1 2 |
|
4 |
|
0 2 3 4 |
Explicație
Pas 1
Ana a ales un polinom de grad . Așadar, îi transmite Ecaterinei numărul .
Pas 2
Ecaterina răspunde cu următorul program:
$Y0 = 0
$Y0 = 1
$Y0 = 2
$Y1 = 0
$Y1 = 1
$Y1 = 2
$Y1 = $Y1 * $X
$Y = $Y0 + $Y1
Pas 3
Ana îi spune Ecaterinei că a ales polinomul .
Pas 4
Ecaterina îi spune Anei că pentru ca programul pe care l-a afișat la pasul 2 să evalueze polinomul P, trebuie comentate liniile și .
Verificare
După comentarea liniilor, codul Ecaterinei devine:
$Y0 = 1
$Y1 = 2
$Y1 = $Y1 * $X
$Y = $Y0 + $Y1
Putem să observăm așadar că $Y = 1 + 2 * $X = P($X).
Exemplul 2
stdin |
stdout |
|---|---|
1 |
|
8 |
|
$Y0 = 0 |
|
$Y0 = 1 |
|
$Y0 = 2 |
|
$Y1 = 0 |
|
$Y1 = 1 |
|
$Y1 = 2 |
|
$Y1 = $Y1 * $X |
|
$Y = $Y0 + $Y1 |
|
0 1 |
|
4 |
|
1 2 3 5 |