Academos
  1. Subiecte
  2. Bacalaureat
  3. Informatică mate-info, C
  4. 2021 august
  5. Subiectul al III-lea, 3. b)

Subiectul al III-lea, 3. b)

Bacalaureat 2021, Informatică mate-info, C, sesiunea august.

Numim pereche asemenea (x,y) două numere naturale cu cel puțin două cifre, x și y, cu proprietatea că ultimele două cifre ale lui x sunt egale cu ultimele două cifre ale lui y, dispuse eventual în altă ordine. Fișierul numere.in conține numere naturale din intervalul [10,10⁵]: pe prima linie două numere na și nb, pe a doua linie un șir A de na numere, iar pe a treia linie un șir B de nb numere. Numerele aflate pe aceeași linie a fișierului sunt separate prin câte un spațiu. Se cere să se afișeze pe ecran numărul de perechi asemenea (x,y), cu proprietatea că x este un termen al șirului A, iar y este un termen al șirului B. Proiectați un algoritm eficient din punctul de vedere al timpului de executare. Exemplu: dacă fișierul conține numerele 9 7 112 20 42 112 5013 824 10012 55 155 402 1024 321 521 57 6542 255 se afișează pe ecran numărul 13 deoarece sunt 13 perechi asemenea: (112,321), (112,521), (20,402), (42,1024), (42,6542), (112,321), (112,521), (824,1024), (824,6542), (10012,321), (10012,521), (55,255), (155,255).

Cerința

8 puncte

Scrieți programul C/C++ corespunzător algoritmului proiectat. (8p.)

Arată baremul

b) Pentru program corect - 8p. -operații cu fișiere: declarare, pregătire în vederea citirii, citire din fișier - 1p. -determinare a valorii cerute (*),(**) - 5p. -utilizare a unui algoritm eficient (***) - 1p. -declarare a variabilelor, afișare a datelor, corectitudine globală a programului¹⁾ - 1p.

(*) Se acordă punctajul chiar dacă algoritmul ales nu este eficient. (**) Se acordă numai 3p. dacă algoritmul este principial corect, dar nu oferă rezultatul cerut pentru toate seturile de date de intrare. (***) Se acordă punctajul numai pentru un algoritm liniar. O soluție posibilă utilizează un vector de frecvență v în care vᵢ reprezintă numărul de valori x din șirul A pentru care i=x%100 (i∈[0,99]). Vectorul v se actualizează pe măsura parcurgerii celei de a doua linii a fișierului. Se determină numărul cerut nr pe măsura parcurgerii numerelor de pe a treia linie a fișierului: pentru fiecare număr curent y din șirul B se determină ultimele două cifre ale sale, c1 și c2 și numerele i și j, unde i=c1*10+c2, iar j=c2*10+c1, apoi se adună la nr valoarea vᵢ și, dacă i≠j, se adună la nr și vⱼ.

O altă soluție utilizează câte un vector de frecvență pentru fiecare șir, va și vb, cu aceeași semnificație ca mai sus. Vectorii se completează pe măsura citirii fiecărui șir, iar numărul cerut se obține la final, prin parcurgerea vectorului vb și pentru fiecare i∈[0,99], se determină ultimele două cifre ale sale, c1 și c2 și numărul j, unde j=c2*10+c1, apoi se adună la nr valoarea vbᵢ·vaᵢ și, dacă i≠j, se adună la nr și vbᵢ·vaⱼ.

¹⁾ Corectitudinea globală vizează structura, sintaxa, alte aspecte neprecizate în barem.

Același item în alte lucrări

Sesiuni de examen

2026
2025
2024
2023
2022
2021

Simulări, modele de subiect și subiecte de rezervă

2026
2025

Toate variantele itemului Subiectul al III-lea, 3. pe o singură pagină

Exersează zilnic cu Academos

Aplicația pentru Evaluarea Națională și Bac. În curând pe:

  • App Store
  • Google Play