Răspuns :
a.
Algoritmul este eficient din punct de vedere al timpului de executare, întrucât are o structură liniară. Sunt citite ambele șiruri și sunt memorate aparițiile fiecărei cifre în ambele șiruri prin 2 vectori de frecvență. Numărul de perechi este aflat calculând suma produselor aparițiilor fiecărei cifre în cele 2 șiruri.
b.
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream fin("date.in");
int Na, Nb;
int cifrea[10] = {0}, cifreb[10] = {0};
fin >> Na >> Nb;
int x;
for (int i = 0; i < Na; i++) {
fin >> x;
int ultcifra = x % 10;
cifrea[ultcifra]++;
}
for (int i = 0; i < Nb; i++) {
fin >> x;
int ultcifra = x % 10;
cifreb[ultcifra]++;
}
int nrperechi = 0;
for (int i = 0; i < 10; i++)
nrperechi += cifrea[i] * cifreb[i];
cout << nrperechi << "\n";
return 0;
}
Vă mulțumim că ați vizitat site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Dacă aveți întrebări sau nevoie de asistență suplimentară, nu ezitați să ne contactați. Ne vedem curând și nu uitați să ne adăugați la marcaje!