II sesiune specială 2019 (S.N.)

Subiectul al II-lea

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 afişată dacă se citesc, în această ordine, numerele 10 și 3.                                    (6p.)
b)Dacă pentru k se citeşte numărul 5, scrieţi trei numere care pot fi citite pentru n astfel încât, în urma executării algoritmului, pentru fiecare dintre acestea, valoarea afişată să fie 10.                    (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 calculează, în variabila p, suma exponenților factorului prim k din descompunerea fiecărei valori naturale din intervalul [1, n]. Pentru precizarea valorii 4 se acordă 6 puncte.

Rezolvare pas cu pas

nkpiinxx%k=0
10301   
   1->2da1nu
   2->3da2nu
    da3da
  13->4 1nu
   4->5da4nu
   5->6da5nu
    da6da
  26->7 2nu
   7->8da7nu
   8->9da8nu
    da9da
  3  3da
  49->10da1nu
   10->11nu10nu

Valorile care aduc modificări variabilei p trebuie să fie valori nenule multiplu de 5. A zecea valoare de acest tip este 50, dar cum valoarea 25 determină mărirea valorii variabilei p cu două unități, ne vom opri la valoarea 45. Pentru oricare trei valori din intervalul [45, 50) se acordă 3×2 puncte=6 puncte.

Pentru program corect se acordă 10 puncte astfel:
-declarare variabile1 punct
-citire date1 punct
-afişare date1 punct
-instrucţiuni repetitive (Se acordă numai 2p. dacă doar una dintre instrucțiunile repetitive este conform cerinței.)4 puncte
-atribuiri2 puncte
-corectitudine globală a programului1 punct