2 / 15
Dec 2018

Witam mam problem z powyższym zadaniem, na SPOJU oraz na Ideone nie przechodzi natomiast w moim kompilatorze przechodzi i wyświetla dobre wyniki.
O to kod:

Bardzo bym prosił o pomoc i ewentualną podpowiedź co do poprawności kodu.
Z góry dziękuję.

  • created

    Dec '18
  • last reply

    Dec '18
  • 14

    replies

  • 1.1k

    views

  • 4

    users

  • 6

    links

Czyli mój błąd polega na tym że dane powinny być podane w jednej linii?
Bo w temacie , który wysłałeś każdy kod jest w c++, i niestety nie znajduje tam podobnego rozwiązania do mojego.

Myślałem że program ci działa, ale SPOJ nie akceptuje i dlatego dałem link do testów. Teraz widzę, że w ogóle nie działa ci wczytywanie danych. Na Javie się niestety nie znam, więc będziesz musiał poczekać na odpowiedź kogoś innego :frowning:

Znaczy wszystkie testy z tematu wyżej mój program przechodzi w kompilatorze ale w SPOJU nie :frowning:
I tak sobie pomyślałem że ja nie wczytuje wszystkich danych od razu tylko po prostu wpisuję ilość testów, następnie odpala się pętla i pobiera pierwszą liczbę, następnie wyświetla wynik dla niej i potem kolejną liczbę itp. To znaczy że u mnie schemat wygląda następująco: liczbatestów, liczba1, wynik jeden, liczba2, wynik2 itp.

wielokrotnie było to pisane dla programów jawy (choć dla innych zadań) - błąd masz przecież opisany, a znaczy, że nie należy używać dwóch instancji scanner
generalni, powinieneś dokładniej zapoznać się z pobieraniem danych ze strumienia wejściowego

Ok, dzięki za uwagę, lecz po naprawieniu błędu program dalej nie przechodzi SPOJ :frowning:
W Ideine natomiast wszytko idzie ok:

ale tylko dla tego konkretnego testu (i wielu innych też) :slight_smile:

ale już dla testu:

80
1
2


80

już tak dobrze nie jest :slight_smile:

i dla wielu innych testów też nie - mógłbym podać test tylko z 2 liczbami, ale byłoby to za łatwe :slight_smile:

No właśnie dla pierwszych 80 wszystkie wyniki są poprawnie wyświetlane:


Więc myślę że sam algorytm jest dobry i poprawnie rozwiązuje przypadki.

czy uruchomiłeś na ideone.com2 test, który podałem ?

i postaraj się zrozumieć mój poprzedni post, to co napisałem, i to czego nie napisałem :slight_smile:

Tak odpaliłem test od 1 do 80 i dla wszystkich wyniki były dobre.
Ewentualnie może być problem z bardzo dużymi liczbami, które przekroczą zakres int(taka myśl mnie naszła ale nie wiem czy to w tym problem :smirk:)

to niedokładnie sprawdziłeś - tam jest błąd, choć być może trudno go zauważyć :slight_smile:

nie, nie ma problemu z przekroczeniem zakresu (przynajmniej dla zakresu danych podanych w zadaniu)

i co z drugą linijką mojego poprzedniego postu ?

Faktycznie coś jest źle :smile:
I wysuwam tezę, po głębokiej analizie :joy: , że mam problem gdy obok siebie stoją takie liczby jak 10, 11 ; 100, 101 ; 12, 33 itp.
Czy wykryłem poprawnie usterkę ?
I takie pytanie czy mój kod jest w miarę ok, ewentualnie co byś mi poradził by kod był bardziej optymalny,i czy rozwiązanie wykrytego problemu mogę rozwiązać w ten sposób czy raczej jest to niemile widziane ?

tym razem analiza wyników poprawna :slight_smile:
błąd, jak widać był prosty
nie ma czegoś takiego jak “bardziej optymalny” :slight_smile:
ja napisałbym ten kod trochę inaczej, ale twój jest wystarczająco dobry
rozwiązanie problemu może być tak, choć byłoby ładniejsze, gdyby tam wstawić: b = -1;