1 / 19
Aug 2017

Cześć! Mam pewny problem z tym zadaniem (http://pl.spoj.com/problems/MWP2_2C/) - choć przechodzi testy przykładowe oraz wydaje mi się, że rozpatrzyłem wszystkie możliwości to jednak nadal mam WA czyli coś mi jednak musiało umknąć. Byłbym bardzo wdzięczny, gdyby ktoś napisał mi jakieś "podchwytliwe" testy razem z poprawnym outputem, żebym mógł znaleźć błąd.

  • created

    Aug '17
  • last reply

    Jul '22
  • 18

    replies

  • 1.6k

    views

  • 11

    users

  • 3

    likes

  • 8

    links

Po co nowy wątek dla już (niestety w liczbie mnogiej) istniejących?

Gdybyś umieścił kod na ideone, było by łatwiej. Tak mogę tylko zapytać (z pewną dozą niepewności :wink: ), co masz na myśli pisząc: "rozpatrzyłem wszystkie możliwości" ?

Mój kod: Ideone41. Jeśli chodzi o te możliwości (możliwe, że nie wszystkie :smiley: ) , to oprócz normalnego liczenia długości pomiędzy środkami, wziąłem pod uwagę to, że okręgi mogą mieć wspólny środek oraz, że jeden okrąg może być w drugim.

Dzięki wielkie, chyba już wszystko działa tylko teraz przekraczam limit czasu. :frowning: Trochę go "zoptymalizowałem" (Nowy kod50) ale to nadal za mało... Jakbyś miał jakieś sugestię, jak go przyspieszyć, to możesz pisać. :wink:

Jeśli chodzi o TLE w tym konkretnym zadaniu, to powinno wystarczyć zwykłe przejście z cin/cout na scanf/printf. Nie mniej jednak nadal masz błąd.

input:
1
10 5 2
5 10 3

output:
0.00

Dzięki wielkie! Już jest AC. W końcu ogarnąłem, że za bardzo kombinuję, zamiast spojrzeć na wszystko z dalszej perspektywy :smiley: Jeszcze raz dzięki :slight_smile:

1 month later
  1. Test:

    1
    0 0 10
    1 1 100

(powinno wyjść 20)

  1. Czy Ty przerzuciłeś się z C++ na Pythona w ten sposób, że piszesz dalej w stylu C++ a jedynie ze składnią (czy tam słowami kluczowymi) Pythona? Bo tak to wygląda. Linijki od 8 do 17 można zapisać w jednej linii. Żeby nie pozostać gołosłownym:
    https://ideone.com/iSBDSs27
    To są wyrażenia listowe. Cały Twój program (37 linii) można zapisać w około 10 linii poprawiając przy tym czytelność. Polecam zatem jakiś kurs Pythona byś w Pythonie pisał w stylu Pythona, a w C++ w stylu C++.
    (Mam nadzieję, że mnie tu dobrze zrozumiesz)

  2. Na spoju wrzucasz kod w Python3 (czyt. Python 3.5), a na ideone w Python 3.4 nbc. Nie polecam robić takich roszad, te 0.1 czasem może zmienić sposób wykonywania się kodu (w szczególności jak się skorzysta z czegoś wprowadzonego niedawno).

3 months later

Wystarczy dokładnie przeczytać treść zadania, aby wiedzieć, że ten program nie może działać poprawnie (niezależnie od tego, czy przewidziano poprawnie wszystkie możliwe przypadki, czy też nie)

a oto prosty test:

1
0 0 1000000
1 0 1
1 month later

Cześć,
Przekraczam limit czasu w tym zadaniu. Problem optymalizacji czy program gdzieś “zacina się”?
IDEONE23

Tu są dość wyśrubowane limity czasowe. Zamień cin/cout na scanf/printf. Powinno pomóc.

Dzięki, pomogło :wink:
Ps. Istnieją szybsze sposoby niż scanf i printf w C++?

4 years later

Cześć,
Mam pytanie, siedzę już trochę nad tym i szukam błędu u siebie i zacząłem się zastanawiać, czy jak jeden okrąg znajduje się wewnątrz drugiego to czy ta szukana długość to promień mniejszego okręgu, czy jednak po prostu jego średnica?
Czy jak środki okręgów są takie same to wynik to 0?
Dzięki za odpowiedź.

Zadałeś 3 pytania.
Jeśli się nie mylę to:
Nie.
Tak.
Nie.

Kartka papieru i ołówek twoim najlepszym przyjacielem.
Jeszcze lepszym jakiś program graficzny, np geogebra lub AutoCAD itd. Takie zadanie to okazja do nauki i obsługi takich programów.

Problemem może być co rysować. Zacznij np od jednakowych pokrywających się okręgów.
Potem jeden przesuwaj i analizuj.

Mój program (AC) dla testów adekwatnych do Twoich pytań zdaje się potwierdzać to, co napisał @narbej.

Na pomysł AutoCADa śmiechłem :wink: GeoGebra jest niegłupia, ale w tym zadaniu lepiej sprawdzi się kartka papieru i rozrysowanie oraz przeanalizowanie wszystkich przypadków czyli tych, które są tu: https://matematykaszkolna.pl/strona/473.html6. Kod zostawiam już Tobie.