Mam pewien problem, mianowicie, sędzia oczekuje EOLN, a czasami przyjmuje EOF.
Jak ten drugi błąd jestem w stanie zrozumieć to oczekiwanie EOLN nie ma dla mnie sensu.
Proszę o pomoc.
Zadanie:
Napisz program, który wczyta listę podzielników obydwu liczb i znajdzie odpowiedź na postawione wyżej pytanie.
Dane wejściowe:
Pierwszy wiersz danych wejściowych zawiera jedną liczbę naturalną n oznaczającą ilość wszystkich podzielników obydwu liczb (2 ¬ n ¬ 128). Kolejny wiersz zawiera n liczb naturalnych (z zakresu od 1 do 104 ) – podzielników obydwu liczb podanych w losowej kolejności. Liczby w wierszu oddzielone są pojedynczymi odstępami.
Wynik programu:
Program powinien wypisać wiersz tekstu zawierający dwie liczby naturalne, których podzielniki wczytano. Liczby powinny być oddzielone pojedynczym odstępem i wypisane w kolejności nierosnącej.
Przykład :
#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;
int main()
{
int n;
cin >> n;
vector<int>tab2(n);
unordered_map<int,int>tab;
int w;
for (int i = 0; i < n; i++) {
cin >> w;
tab2[i] = w;
tab[w] = 1;
}
bool end=0;
int b = 0;
for (;;) { // main loop
end = true;
b = 0;
for (auto a : tab) {// najwieksza
if (a.second == 0) {
continue;
}
else if (b < a.first) {
b = a.first;
}
}cout << b;
for (auto t : tab2) { // dzielenie
if (tab[t] == 0) {
continue;
}
else if (b % t == 0) {
tab[t] = 0;
}
else {
end = false;
tab[t] = 1;
}
}
if (end == true) {
break;
}
cout << " ";
//-------------------------------------
}
return 0;
}
Dla danych wejściowych: 12 4 2 1 1 5 10 24 8 12 2 6 3 prawidłowym wynikiem jest: 24 10 Istotnie, liczby 1, 2, 3, 4, 6, 8, 12 oraz 24 są podzielnikami liczby 24, zaś liczby 1, 2, 5 oraz 10 są podzielnikami liczby 10.