1 / 14
Jul 2017

Sprawdź jakie wyniki uzyskasz wstawiając do ostatniej użytej funkcji zmienne innego typu.

wskazane jest aby, pytający, i również odpowiadający przypomnieli sobie z dobrego podręcznika C/C++ jak odbywa się automatyczna konwersja danych

  1. To był konkret
  2. Tylko to o czym napisał @mariusz193 wystarczy zmienić w Twoim kodzie by dostać AC. Bardziej (niż podając odpowiedź) pomóc się już nie da.
  3. Najlepsi profesorowie matematyki do dziś powtarzają elementy typu twierdzenie Pitagorasa (oczywiście sami są o wiele dalej, ale dla perfekcyjnej wprawy), kickbokserzy po kilkunastu latach treningów ćwiczą dalej ciosy jakie nauczyli się na pierwszych zajęciach, a programiści pracujący ze mną (w tym ja) powtarzają sobie czasem takie rzeczy jak zakresy zmiennych. Spróbuj więc przyjąć, że wnikliwa analiza (może wielokrotna?) zagadnienia o którym napisał @mariusz193 pomoże Ci rozwiązać zadanie i być lepszym programistą.

Niech będzie:

0 0 3
1 0
2 3
999999 999999

Powinno być:

999999 999999
1414212.15

Masz:

999999 999999
4294967295.83

Jak już zmienisz to zobaczysz (mam nadzieję) jaki konkret napisał @mariusz193

Przy okazji porada do zadań na spoju i innych też:
1) Zawsze testuj aplikację dla typowych wartości
2) Zawsze testuj aplikację dla nietypowych wartości
3) Zawsze testuj aplikację dla granicznych wartości
4) Zawsze testuj aplikację dla wartości, które mogą się nie zmieścić

(nie zrobiłeś tutaj punktów 3 i 4)

Można prościej: zawsze testuj aplikację dla wszystkich wartości :wink: Albo w wersji dla leniwych: nie żałuj pamięci w XXI wieku :wink:

Dzięki bardzo wszystkim za pomoc.
Po prostu dopisałem long long i śmiga.
Aczkolwiek nadal się dziwie jak może poza pamięć wychodzić...
w dziwny sposób muszą być składowane wartości. np. dla zapisu
odl = (x-xa)(x-xa) + (y-ya)(y-ya)
to po obliczeniu (x-xa)(x-xa) prawdopodobnie wartosc skladowana jest gdzies w "x" albo w "xa" tymczasowo jakos.

Właśnie o tym pisał użytkownik mariusz. Nie jest w x ani w xa jak piszesz, ale w zmiennej tymczasowej o tym samym typie.

Nieistotne jeśli od razu wybierze się właściwy typ albo w odpowiednim momencie dokona się rzutowania.

4 years later

Następne super zadanie. W Pythonie nikt nie mieści się w czasie. Nawet z fast inputem nie przejdzie…

Potwierdzam. W PyPy się da i w Pythonie 2 (M.N. tego dokonał), ale dla Pythona 3 nie ma takiej opcji. Gdyby tylko ktoś zaktualizował PyPy do wersji 3.9 to by można było porozmawiać (jak zapewniają twórcy PyPy - kod w nim skompilowany jest około 4,5 raza szybszy).