Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

AL_10_10 - Suwak logarytmiczny, hypot i long double

suwakJeż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łowego50000B
Limit pamięci:1536MB
Cluster: Cube (Intel G860)
Języki programowania:All except: ASM64 GOSU
Pochodzenie:ALGOLIGA

ukryj komentarze
2013-09-15 10:16:15 narbej
Dla tego przypadku twój program daje prawidłową odpowiedź, ale tym bardziej przeczytaj moje wcześniejsze komentarze i spróbuj zastosować się do nich.

Ostatnio edytowany: 2013-09-15 10:27:44
2013-09-15 10:10:52 Karol Ró¿ycki
1 1 1 1 -2 3

Jaki powinien być out dla tego testu?
2013-09-15 09:15:50 narbej
PS
Przeczytać od deski do deski, a jedna deska to:
"Zadanie w systemie SPOJ ("... ;-)

Ostatnio edytowany: 2013-09-15 09:22:09
2013-09-15 07:19:01 narbej
Nie, nie można, bardzo mi przykro ;-)
Do rozwiązania tego zadania wystarczy tylko dokładnie przeczytać treść zadania, wszystko tam jest podane praktycznie na tacy. Jeżeli chodzi o testy, to zawsze warto zrobić swoje.
2013-09-14 22:13:39 Julia Ostrowska
A mogę prosić o przykład z większym n i wynikiem różnym od 1?
2013-09-14 18:29:26 Mateusz Puczel
moje również i widze ze nie tylko moje
2013-09-14 17:06:36 Kamil Debowski
moje zgłoszenia pozostają w stanie "oczekuje na wykonanie".
EDIT - nieważne, już jest ok

Ostatnio edytowany: 2013-09-14 17:12:41
2013-09-14 10:20:25 narbej
Na przykład biorąc wartość bezwzględną z n, albo użyć wyobraźni?
2013-09-14 10:18:34 Marcin Augustynowicz
Ale jak można powtórzyć algorytm -1 razy?
2013-09-14 10:16:08 narbej
Bo:
Wartości n i d są z przedziału: 0 < |n| < 100
oraz:
gdy n < 0
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.