1 / 35
Dec 2015

Witam,

Czy istnieje gdzieś jakaś lista głupich błędów na które powinno się zwracać uwagę na SPOJ-u? Chyba by mi się przydało coś takiego, bo już drugi raz mam taką sytuację, że przechodzę testy, a maszyna nie przyjmuje wyniku. Czyżbym znowu gdzieś zapomniał dać end of line?

Kod usunięto
  • created

    Dec '15
  • last reply

    Oct '20
  • 34

    replies

  • 3.1k

    views

  • 20

    users

  • 8

    likes

  • 12

    links

O, tak. Istniała taka lista. Chciałem Ci podlinkować na starym forum, ale widzę, że albo admini usunęli, albo się popsuło. Więc jeden z pierwszych punktów to było:

  1. Sprawdź czy Twój program zwraca dobre wyniki dla testu pod zadaniem.

W pierwszej linii liczba testów t, w kolejnych liniach po dwie liczby w każdym wierszu.

Dwie powyższe linijki nie robią tego czego od nich oczekujesz. Powinieneś napisać np albo:
a = nwd(a, b)
albo po prostu:
cout << nwd(a, b) << endl;
i oczywiście dodać jeszcze ilość testów.

Jeżeli masz AC, powinieneś usunąć kod.

Tu się akurat nie zgodzę. Na początku też tak myślałem, ale przecież funkcja 'nwd' przyjmuje referencje do zmiennych. Czyli na koniec 'a' będzie zawierać prawidłową odpowiedź.
Natomiast

a = nwd(a, b)

przy braku returna w funkcji będzie zwracać jakieś śmieci.

3 months later

witam,
mam problem z tym programem. nie wiem w ktorym miejscu jest blad, ale kompilator na stronie twierdzi ze przekraczany jest czas. kod zamieszczam na zewnetrznej stronie, bo nie jest jakim sposobem umieszcza sie na forum. wielokrotnie powtarzana przez wszystkich metoda "ctrl+k" u mnie wyswietla okienko do wklejenia linku...

https://ideone.com/eHa6om74

jesli ktos bedzie potrafil pomoc, to bede zobowiazany

7 months later

Tak skomplikowanego sposobu wyznaczania NWD jeszcze nigdy nie widziałem. Wyszukaj sobie coś na temat algorytmu Euklidesa.

ok poprawie na algorytm Euklidesa ale może wiesz dlaczego mój program wyżuca mi błędną odpowiedź na teście?

Tak, sądzę, że wiem. Dlatego, że jest nie do końca poprawny?

np:
nwd (11, 77) = 11
.....
nwd(11, 110) = 11
nwd(11, 121) = 1 !? :wink:
....
itd

3 months later

Witam serdecznie,
Czy jest ktoś w stanie stwierdzić, dlaczego sędzia uznaje "błędną odpowiedź" poniższego programu:

(kod usunięty)

Przechodzi on wszystkie możliwe testy.

Dzięki za szybką odpowiedź.
1. Testuję w Code::Blocks IDE 16.01, GCC 4.9 Series
Wszystkie wyniki w programie wychodzą mi poprawnie (te z polecenia też), więc nie wiem skąd różnica z ideone.
2. Znam tę metodę.
3. Zgadzam się, w tym wypadku jest niepotrzebny, ale nie jest błędem.

(kod usuniety)

prawdopodobnie dzieje się tak przez to że twoja funkcja nwd nie zwrca obliczonej wartości za pomocą return i dlatego domyślnie wysyłane jest 0. Starczy dopisać return a i wtedy uzyskasz zarówno na ideone jak i na na spoju te same wyniki co w konsoli.

Dodatkowo sprawdź twój kod dla np.
10 10
20 20
.....
po poprawieniu tego uzyskasz AC

PS nie zapomnij usunąć kodu

Rzeczywiście to było przyczyną błędu. Poza tym, tak jak napisałeś, pominąłem przypadek dla takich samych liczb na wejściu.

Dziękuję Ci bardzo za pomoc. Program zaliczony.

Nie przechodzi też test
10 0
0 20
itd
z analogicznego powodu jak wyżej.

PS
Ustaw w swoim IDE [code::blocks] ostrzeżenia np::
settings / compiler .... // enable .... [-Wall] // enable ... [-pedantic] itd
Czym więcej tym lepiej.

1 month later

Napisałem program do NWD: http://ideone.com/TeZcDB27
ale gdy sprawdza mój kod to wyświetla, że mam błędną odpowiedź pomimo, że jak sprawdzałem wartości pokazane w przykładzie to wartości wszystkie się zgadzały

czy zanim wstawiłeś ten post sprawdziłeś działanie twojego programu dla jakiegokolwiek testu podanego na postach powyżej np.
-mój ostatnio podawany test (10 10) powoduje u ciebie błąd wykonania
-dane od najbre j(10 0) powodują wieczne zapętlenie się twojego programu

19 days later

Mój program też nie przeszedł testu z zerem ale został zaakceptowany, wiec nie trzeba pisać tutaj żadnego warunku.