Zgłaszanie | Wszystkie zgłoszenia | Najlepsze | Lista |
CANNON - Armata |
W pozycji (x0,y0)=(0,0) znajduje się armata. Określ prędkość początkową oraz wyznacz tor pocisku wystrzelonego z armaty w chwili t0=0, w taki sposób, by po zadanym czasie T pocisk uderzył w cel o podanych współrzędnych (xT,yT).
Równanie ruchu pocisku dla chwili czasu t > t0 dane jest wzorem:
x''(t) = -c x'(t)R(t)
y''(t) = -c y'(t)R(t) - g,
gdzie g, c - parametry podane na wejściu (oznaczające odpowiednio przyspieszenie grawitacyjne i współczynnik aerodynamicznego oporu, tym razem opór proporcjonalny do kwadratu prędkości), zaś R(t)= sqrt([x'(t)]2+ [y'(t)]2).
Wejście
W pierwszej linii podana jest liczba testów (około 100). Każdy z testów składa się z pięciu liczb g, c, T, xT, yT oddzielonych spacjami. Wszystkie jednostki są zgodne. Można założyć, że: T > 0, xT2+ yT2 > 0, c >= 0, g >= 0; wartości bezwzględne liczb podanych na wejściu nie przekraczają 100.
Wyjście
Dla każdego zestawu testowego należy wypisać w pierwszej linii wartości x'(0), y'(0), oddzielone spacją. W kolejnych floor(10T) liniach należy wypisać wartości x(t), y(t) dla kolejnych chwil czasu t=0.1,0.2,0.3,...,floor(10T)/10. Przez floor(x) rozumiemy tu największą liczbę całkowitą niewiększą od x (proszę zwrócić uwagę na przypadek gdy T ma dokładnie jedną cyfrę po przecinku).
Do obliczenia wyniku należy użyć nieliniowej metody strzałów, z dobieraniem prędkości początkowej metodą stycznych. Równania różniczkowe można rozwiązywać np. metodą R-K ze zmiennym krokiem.
Wartości wypisywane na wyjściu nie będą przekraczały 103. Dopuszczalny błąd bezwzględny wyniku wynosi 10-3.
Przykład
Wejście: 2 8.2 0.0 1.0 1.5 0.4 10.0 0.3 1.0 1.5 0.4 Wyjście: 1.5000 4.5000 0.15000 0.40900 0.30000 0.73600 0.45000 0.98100 0.60000 1.14400 0.75000 1.22500 0.90000 1.22400 1.05000 1.14100 1.20000 0.97600 1.35000 0.72900 1.50000 0.40000 2.4677 7.1468 0.22331 0.59978 0.41288 1.01586 0.58160 1.29114 0.73715 1.44840 0.88424 1.49954 1.02488 1.45061 1.15848 1.30688 1.28321 1.07636 1.39739 0.76996 1.50000 0.40000
Dodane przez: | Adam Nadolski |
Data dodania: | 2007-01-14 |
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: GOSU |