II.1 simulare 2019 (M.I)
Subiectul al III-lea – Exerciţiul 2
| 1. | Algoritmul alăturat este reprezentat în pseudocod. S-a notat cu a%b restul împărţirii numărului natural a la numărul natural nenul b şi cu [c] partea întreagă a numărului real c. | ||
| a) | Scrieţi valoarea afisată dacă se citesc, în această ordine, numerele 5, 19 și 4. (6p.) | ||
| b) | Dacă pentru variabila b se citeşte numărul 2019, iar pentru variabila k se citeşte numărul 5, scrieţi cea mai mică şi cea mai mare valoare care pot fi citite pentru variabila a astfel încât, în urma executării algoritmului, pentru fiecare dintre acestea, valoarea afişată să fie 0. (6p.) | ||
| c) | Scrieți programul C/C++ corespunzător algoritmului dat. (10p.) | ||
| d) | Scrieţi în pseudocod un algoritm echivalent cu cel dat, înlocuind prima structură cât timp…execută cu o structură de tip pentru…execută. (6p.) | ||

Algoritmul determină cea mai mare valoare naturală din intervalul [a, b] care admite ca divizor cea mai mică putere nenulă a lui k. Dacă nu există un asemenea număr, se va afișa valoarea de start a variabilei y, respectiv valoarea 0. Pentru precizarea valorii 12 se acordă 6p.
Rezolvare pas cu pas
| a | b | k | i | x | p | pm | y | Afișare |
| 5 | 19 | 4 | 19 | 19 | 0 | 0 | 0 | |
| 18 | 18 | 0 | ||||||
| 17 | 17 | 0 | ||||||
| 16 | 16 | 0 | ||||||
| 4 | 1 | |||||||
| 1 | 2 | 2 | 16 | |||||
| 15 | 15 | 0 | ||||||
| 14 | 14 | 0 | ||||||
| 13 | 13 | 0 | ||||||
| 12 | 12 | 0 | ||||||
| 3 | 1 | 1 | 12 | |||||
| 11 | 11 | 0 | ||||||
| 10 | 10 | 0 | ||||||
| 9 | 9 | 0 | ||||||
| 8 | 8 | 0 | ||||||
| 2 | 1 | |||||||
| 7 | 7 | 0 | ||||||
| 6 | 6 | 0 | ||||||
| 5 | 5 | 0 | 12 |
Valorile căutate nu trebuie să fie multiplu de k, iar cum a≤b, cea mai mare valoare pentru a este 2019, iar cea mai mică este 2016. Orice valoare mai mică decât 2016 determină trecerea prin cel puțin un multiplu de 5 și ar duce la modifcarea valorii de start a variabilei p. Se acordă câte 3p. pentru fiecare din cele două valori precizate mai sus.
| Pentru program corect se acordă 10 puncte astfel: | ||
| -declarare variabile | 1 punct | |
| -citire date | 1 punct | |
| -afişare date | 1 punct | |
| -instrucţiune de decizie (Se acordă numai 1p. dacă instrucțiunea de decizie este principial corectă, dar expresia evaluată nu este conform cerinței.) | 2 puncte | |
| -instrucţiuni repetitive (Se acordă numai 2p. dacă numai una dintre instrucțiunile repetitive este conform cerinței.) | 3 puncte | |
| -atribuiri | 1 punct | |
| -corectitudine globală a programului | 1 punct | |

