II.1 Simulare 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 5, 19 și 4.                            (6p.)
b) Dacă pentru variabila b se citeste numărul 2019, iar pentru variabila k se citeste 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 afisată 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ă 6 puncte.

Rezolvare pas cu pas

abkpmyii≥axpx%k=0p≠0 și (p<pm sau pm=0)
51940019     
     19->18da190nunu
     18->17da180nunu
     17->16da170nunu
      da160da 
       41da 
   21616->15 12nuda
     15->14da150nunu
     14->13da140nunu
     13->12da130nunu
      da120da 
   11212->11 31nuda  
     11->10da110nunu
     10->9da100nunu
     9->8da90nunu
      da80da 
     8->7 21nunu
     7->6da70nunu
     6->5da60nunu
     5->4da50nunu
      nu    

Valorile căutate nu trebuie să fie multiplu de k, iar cum ab, 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 3 puncte pentru fiecare dintre cele două valori precizate mai sus: 2016, 2019; 2×3 puncte=6 puncte

Pentru program corect se acordă 10 puncte astfel:
– declarare variabile1 punct
– citire date1 punct
– afişare date1 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
– atribuiri1 punct
– corectitudine globală a programului1 punct