Przygotowuję się na II etap OIG i postanowiłem, że zrobię sobie zadania z zeszłego roku. No i mam zadanie o takiej mniej więcej treści:
Dany jest zbiór liczb A oraz liczba k. Zadaniem jest znalezienie najmniejszej wielokrotności liczby k, która nie należy do zbioru A.
No i nakodziłem coś takiego:
#include <iostream>
#include <set>
using namespace std;
typedef unsigned long long int ullint;
int main( int argc, char* argv[] ) {
int size = 0; // rozmiar zbioru
int k = 2; // liczba k
cin >> size >> k;
set< ullint > tab; // zbiór wszystkich liczb ( zbiór A z zadania )
for( int i = 0; i < size; i++ ) {
ullint tmp; // tymczasowa zmienna, która ma zostać dodana do zbioru
scanf( "%llu", &tmp );
tab.insert( tmp );
}
ullint mnoznik = 1; // która wielokrotność liczby k
for( ;; mnoznik++ )
if( tab.find( mnoznik * k ) == tab.end() ) // jeśli liczby nie ma w zbiorze
break; // wyskakujemy z pętli
cout << ullint(k * mnoznik); // wywalamy wynik na ekran
return 0;
}
No i mi teraz dla pewnego wyniku wyrzuca zły wynik ( jest to za wielkie żeby tu wkleić, ale można pobrać stąd http://www.oi.edu.pl/oig/user.php/testy-min.tgz?op=get&id=1394 - test min15.in, a plik wynikowy min15.out ). Z góry dzięki.