Bacalaureat 2020 Subiectul II

  

Continuăm seria de postări cu subiectul al II-lea din modelul propus de Ministerul Educației în acest an. Este un subiect de dificultate medie, dar destul de consistent.


SUBIECTUL AL II-LEA

  1. Facem o lista cu toate variabilele din program și îl parcurgem pentru valorile date

m: 21 -> 22 -> 23 -> 24 -> 28 -> 32

n: 38 -> 37 -> 36 -> 32 -> 28 -> 24

x: 4

s: 36 -> 60 -> 92 -> 120 (= 36+ 24 + 32 + 28)

pm: 4

pn: 4


Se va afișa valoarea 120


Răspuns: 120


  1. Pont: încercați să vă dați seama ce face programul respectiv. De cele mai multe ori o să deduceți după ce parcurgeți măcar o dată programul pe niște valori date (a.).


    Observăm că la a. pentru valorile 21(m), 38(n), 4(x) s-a afișat 120(s), adică suma tuturor multiplilor lui 4(x) din intervalul  [21, 38]. Generalizând, în variabila s este memorată suma tuturor numerelor din intervalul [m, n] divizibile cu x. 


    Informațiile cheie din enunț:

            (1)m: 20, x: 2020, s: 2020

            (2)scriem cea mai mică valoare pe care poate s-o ia n

            (3)scriem cea mai mare valoare pe care poate s-o ia n


    Știind ce face programul deducem faptul ca în intervalul [20, n], trebuie să fie un singur număr divizibil 2020, el însuși. Deci, 2020 <= n <= 4039


        Răspuns: cea mai mică valoare este 2020 și cea mai mare 4039


  1. Pont: așezarea în pagină este foarte importantă! Astfel, corectorul va putea parcurge mai ușor codul pe care l-ați scris.


    Atenție! Algoritmul echivalent în C/C++ al structurii:


repetă
instrucțiuni;
până când (expresie)

    este


do{
instrucțiuni;
}while(!expresie);

Răspuns:


#include 
using namespace std;
int main()
{
    int m, n, x, s, pm, pn;
    cin >> m >> n >> x;
    s = 0;
    pm = 1;
    pn = 1;
    do
    {
        if(m%x == 0)
            s = s + m, pm = x;
        if(n%x == 0 && m != n)
            s = s + n, pn = x;
        m = m + pm; // echivalent cu m += pm;
        n = n - pn; //echivalent cu n -= pn;
    }
    while(m <= n);
    cout << s;
    return 0;
}

  1. Singura structură repetitivă cu număr necunoscut de pași care rămâne de discutat este structura repetitivă condiționată anterior (cea din program este condiționată posterior): 

           ┌cât timp (expresie) execută
           │ instrucțiuni
           └■

    Atenție! Cele două structuri nu sunt echivalente! 

(1) Programul intră în structura „repetă” fără a verifica dacă este sau nu adevărată condiția/expresia!

(2) Expresia structurii condiționată posterior („repetă … până când”) este condiția de oprire (va executa cât timp expresia este falsă). 

(3) Expresia structurii condiționată anterior („execută (expr) cât timp”) este condiția de continuare (va executa cât timp expresia este adevărată).

 Așadar, structura echivalentă structurii 

┌Repetă 	instrucțiuni
└■Până când m > n

    este

    ┌cât timp m<=n execută
     instrucțiuni
    └■    

Răspuns:

  citește m, n, x
  (numere naturale nenule, m≤n)
    s <- 0; pm <- 1; pn <- 1
     ┌dacă m%x=0 atunci 
     │ s s+m; pm x 
     └■ 
     ┌dacă n%x=0 şi m≠n atunci 
     │ s s+n; pn x 
     └■ 
     m m+pm 
     n n-pn 
     ┌cât timp m<=n execută
     │┌dacă m%x=0 atunci 
     ││ s s+m; pm x 
     │└■ 
     │┌dacă n%x=0 şi m≠n atunci 
     ││ s s+n; pn x 
     │└■ 
     │ m m+pm 
     │ n n-pn 
     └■ 
     scrie s



Ținem cont de:

    (1) p este un vector și are 20 de elemente

    (2) fiecare element are 3 date specifice: id, numar, pret

    (3) datele precizate sunt numere naturale 

    (4) numele structurii este parcare


Răspuns: 


struct parcare{
unsigned int id, numar, pret;
}p[20];





Informații cheie:

(1) putem folosi doar variabilele i, a[5][7]

(2) variabilele se încadrează în tipul de date int

(3) indexarea vectorului începe de la 0

(4) afișăm indicii liniilor (cu spații între ele) care au primul(0) și ultimul(6) element egal cu 2020


Răspuns:


    int a[5][7], i;
    for(i = 0; i <= 4; ++i)
        if(a[i][0] == 2020 && a[i][6] == 2020)
            cout << i << ' ';




x
Acest website utilizează cookie-uri pentru a creea o experiență cât mai plăcută. Învață mai multe Acceptă