Zgłaszanie | Wszystkie zgłoszenia | Najlepsze | Lista |
AL_10_10 - Suwak logarytmiczny, hypot i long double |
Jeżeli wiesz do czego służy, to i tak prawdopodobnie nie masz biegłości w posługiwaniu się suwakiem logarytmicznym [tak jak i liczydłami czy abakusem]. Jedną z wielu zalet tych urządzeń jest zapamiętywanie pośredniego [końcowego] wyniku aż do momentu wykasowania go, zupełnie bez użycia baterii, czy akumulatora jak to się dzieje w większości dzisiejszych urządzeń. Inną zaletą suwaka jest brak błędów przepełnienia overflow i underflow. Wadą wszystkich tych urządzeń jest skończona dokładność liczenia, suwak to tylko dwie cyfry znaczące, a w komputerze, używając typu long double, mamy około dziesięć razy więcej tych cyfr.
Policz jak najszybciej i z jak największą dokładnością, końcową odległość [po n iteracjach], pomiędzy dwoma zmieniającymi swoje położenie punktami P1 i P2.
Ta końcowa odległość równa jest odległości policzonej algorytmem:
powtarzaj n razy:
wynik = odl(P1,P2)
gdy n > 0
[P1] = [P1] * wynik, [P2] = [P2] * wynik //mnożymy współrzędne x, y obu punktów
gdy n < 0
[P1] = [P1] / wynik, [P2] = [P2] / wynik //dzielimy współrzędne x, y obu punktów
Wynik wypisz w zaokrągleniu z dokładnością do d cyfr znaczących. Współrzędne punktów i końcowy wynik obliczeń są tak dobrane, by mieściły się w zakresie typu long double. Wartości n i d są z przedziału: 0 < |n| < 100, 0 < d < 20.
Wejście
Nieokreślona ilość testów. Każdy test to jedna linia zawierające następujące dane: najpierw cztery współrzędne x1, y1, x2, y2, a następnie ilość iteracji n i ilość cyfr znaczących do wydrukowania d.
Wyjście
Dla każdego testu należy w oddzielnej linii wypisać odpowiedź - obliczoną odległość.
Przykład
Wejście: 2 2 1 1 -1 3
1 1 2 2 1 1
0 0 -1e-10 1e-10 -1 4
Wyjście:
1.41
1
1.414e-10
Podpowiedź:
We wzorcówce użyto funkcji cout. Aby uzyskać taki sam format wydruku wyników użyj:
cout << setprecision(d) << wynik << endl;
Dodane przez: | narbej |
Data dodania: | 2013-09-11 |
Limit czasu wykonania programu: | 0.100s |
Limit długości kodu źródłowego | 50000B |
Limit pamięci: | 1536MB |
Cluster: | Cube (Intel G860) |
Języki programowania: | All except: ASM64 GOSU |
Pochodzenie: | ALGOLIGA |
ukryj komentarze
|
||||||
2013-09-20 21:53:09 Marcin Kasprowicz
Jak najbardziej zasługuje, można się co nie co nauczyć, no i fajne zadanko :) |
||||||
2013-09-20 09:21:02 narbej
Możliwe, że nie zasługuje na wrzucenie na SPOJ_PL, ale specjalnie dla ciebie wrzuciłem tu: http://www.spoj.com/MBCONT00/problems/AL_10_10/ |
||||||
2013-09-19 12:56:19 Karol Ró¿ycki
A gdzie na spoju jest niby wrzucone to zadanie? Nie mogę znaleźć nijak. :-/ |
||||||
2013-09-18 16:34:52 narbej
google + środkowy wyraz tytułu zadania |
||||||
2013-09-16 06:24:58 Karol Ró¿ycki
Jako, że już po konkursie to można prosić o jakąś bardziej konkretną wskazówkę? ;-) |
||||||
2013-09-15 12:44:34 Kamil Debowski
również polecam przeczytać dokładnie wszystko i w razie potrzeby googlować. Zrozumienie każdego słowa na tej stronie powinno coś dać. |
||||||
2013-09-15 12:04:24 narbej
Tak, ale zapomnij na razie o testach. To zadanie można zrobić zupełnie bez testowania, tylko uważnie czytając treść zadania od deski do deski i pod warunkiem, że wszystko jest zrozumiałe. Jeżeli nie to jest wikopedia czy google. Testy są ważne dopiero, gdy chcesz zejść z czasem poniżej 0.30 Ostatnio edytowany: 2013-09-15 12:21:19 |
||||||
2013-09-15 11:41:54 Karol Ró¿ycki
A dla: 1 1 2 2 15 3 ? ;-) |
||||||
2013-09-15 10:46:27 Angelika S.
Nie zauważyłam, dzięki ;) |
||||||
2013-09-15 10:19:13 narbej
@Angelika S., może o tym nie wiesz, ale istnieją przyrostki, np f i l |