Se dau n numere naturale. Determinați cele mai mari două numere cu trei cifre care nu apar printre numerele date
Răspunsuri la întrebare
Răspuns:
#include <iostream>
using namespace std;
const int MAX_N = 1000;
int n, nums[MAX_N];
bool used[1000]; // utilizat[i] = true dacă numărul i a fost utilizat
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
cin >> nums[i];
if (nums[i] >= 100 && nums[i] <= 999) {
used[nums[i]] = true;
}
}
int max1 = -1, max2 = -1;
for (int i = 999; i >= 100; i--) {
if (!used[i]) {
if (i > max1) {
max2 = max1;
max1 = i;
} else if (i > max2) {
max2 = i;
}
}
}
cout << max1 << " " << max2 << endl;
return 0;
}
Explicație:
Acest program primește numerele naturale ca intrare și utilizează un vector bool "used" pentru a marca numerele cu trei cifre care au fost deja utilizate. Apoi, programul parcurge numerele de la 999 la 100 și determina cele mai mari două numere care nu au fost marcate ca fiind utilizate. În final, programul afișează cele două numere cele mai mari.