Diferente pentru problema/snooker intre reviziile #17 si #29

Nu exista diferente intre titluri.

Diferente intre continut:

== include(page="template/taskheader" task_id="snooker") ==
Ronnie "The Rocket" O'Sullivan a înţeles în sfârşit că şi tacticile defensive sunt utile în jocul de snooker. Pentru a exersa, Ronnie şi-a cumpărat o masă de dimensiuni $(N+2)*(M+2)$, fără buzunare, şi un set format dintr-o bilă albă şi $K$ bile roşii, toate de raza $1$. Colţul din stânga-jos al mesei are coordonatele $(-1, -1)$ iar colţul dreapta-sus are coordonate $(N+1, M+1)$. Observăm astfel că o bilă plasată in colţul stânga-jos va avea centrul la coordonatele $(0, 0)$, iar o bilă plasată in colţul dreapta-sus va avea centrul la coordonatele $(N, M)$.
Ronnie "The Rocket" O'Sullivan a înţeles în sfârşit că şi tacticile defensive sunt utile în jocul de snooker. Pentru a exersa, Ronnie şi-a cumpărat o masă de dimensiuni $(N+2)*(M+2)$, fără buzunare, şi un set format dintr-o bilă albă şi $K$ bile roşii, toate având raza $1$. Colţul din stânga-jos al mesei are coordonatele $(-1, -1)$ iar colţul dreapta-sus are coordonate $(N+1, M+1)$. Observăm astfel că o bilă plasată in colţul stânga-jos va avea centrul la coordonatele $(0, 0)$, iar o bilă plasată in colţul dreapta-sus va avea centrul la coordonatele $(N, M)$.
 
!problema/snooker?poza1.JPG!         !problema/snooker?poza2.JPG!
Ronnie se va antrena în felul următor: el plasează cele $K$ bile roşii pe masă, toate în puncte de coordonate naturale. Apoi, Ronnie îşi alege două puncte $A$ şi $B$ de coordonate naturale $(Xa, Ya)$, respectiv $(Xb, Yb)$. El plasează bila albă cu centrul în punctul $A$ şi încearcă să o lovească cu tacul astfel încât, după ce rulează pe masă, ea să se oprească cu centrul în punctul $B$, fără să atingă vreuna din bilele roşii. Din cauza aranjamentului bilelor roşii, se poate ca lovitura să nu se poată efectua direct, ci doar cu manta. Masa cumpărată de Ronnie este de o calitate superioară, încât bila albă sare din mantă sub acelaşi unghi sub care a fost lovită (vezi figura).
* Manta se defineşte ca fiind marginea înălţată a mesei, mai exact conturul dreptunghiului cu colţurile în punctele $(-1, -1)$ şi $(N+1, M+1)$.
* Se garantează că pentru fiecare din teste există o soluţie pentru care bila albă loveşte manta de maxim $5$ ori.
* Se va accepta orice soluţie pentru care bila albă loveşte manta de maxim $10$ ori şi nu atinge nicio bilă roşie înainte să ajungă în punctul $B$.
* Se consideră că bila albă atinge o bilă roşie dacă distanţa de la centrul bilei roşii la traiectoria bilei albe este mai mică **strict** decât $2$ (de două ori raza $1$).
* Rezultatul se va verifica cu o precizie de $0.0001$.
* **Important!** Pentru afişarea răspunsului se recomandă utilizarea funcţiei $atan2$ din librăria $cmath$, pentru programatorii $C/C++$, sau a funcţiei $arctan2$, pentru programatorii $Pascal$. Ambele funcţii primesc parametrii $y$ şi $x$ şi returnează valoarea în radiani a unghiului facut de punctul $(x, y)$ cu originea $(0, 0)$. Având un punct $(X, Y)$ aflat pe traiectoria iniţială a bilei albe (dinainte de lovirea unei mante) şi punctul $(Xa, Ya)$, răspunsul pe care trebuie să îl afişaţi este $atan2(Y-Ya, X-Xa)$ sau $arctan2(Y-Ya, X-Xa)$. Mai multe detalii despre cele 2 functii gasiti pe 'C++ Reference':http://cplusplus.com/reference/clibrary/cmath/atan2/ şi pe 'FreePascal.org':http://www.freepascal.org/docs-html/rtl/math/arctan2.html
 
!problema/snooker?atan2.jpg 60%!
 
* **Important!** Pentru afişarea răspunsului se recomandă utilizarea funcţiei $atan2(y, x)$ din librăria $cmath$, pentru programatorii $C/C++$, sau a funcţiei $arctan2(y, x)$, pentru programatorii $Pascal$. Ambele funcţii primesc parametrii $y$ şi $x$ şi returnează valoarea în radiani a unghiului facut de punctul $(x, y)$ cu originea $(0, 0)$. Având un punct $(X, Y)$ aflat pe traiectoria iniţială a bilei albe (dinainte de lovirea unei mante) şi punctul $(Xa, Ya)$, răspunsul pe care trebuie să îl afişaţi este $atan2(Y-Ya, X-Xa)$ sau $arctan2(Y-Ya, X-Xa)$. Mai multe detalii despre cele 2 functii gasiti pe 'C++ Reference':http://cplusplus.com/reference/clibrary/cmath/atan2/ şi pe 'FreePascal.org':http://www.freepascal.org/docs-html/rtl/math/arctan2.html
 
h3. Praguri de punctaj
 
* Pentru $20%$ din teste, lovitura se poate efectua direct.
* Pentru alte $20%$ din teste, lovitura trebuie efectuată cu minim o mantă.
* Pentru alte $15%$ din teste, lovitura trebuie efectuată cu minim două mante.
* Pentru alte $15%$ din teste, lovitura trebuie efectuată cu minim trei mante.
* Pentru alte $15%$ din teste, lovitura trebuie efectuată cu minim patru mante.
* Pentru alte $15%$ din teste, lovitura trebuie efectuată cu minim cinci mante.
h2. Exemplu
h3. Explicaţie
...
Există $4$ răspunsuri corecte: $-2.480549, 2.480549, -2.176341, 2.176341$ (corespunzătoare unghiurilor $-142.09, 142.09, -124.68$ si respectiv $124.68$ de grade). Deoarece bila albă se află chiar lângă mantă, dacă lovim sub un unghi negativ (înspre mantă), bila alba va sări imediat şi va urma traiectoria dată de valoarea în modul a unghiului. Astfel, primele două răspunsuri corespund traiectoriei albastre, iar ultimele două corespund traiectoriei portocalii.
 
 
!problema/snooker?poza3.JPG!
== include(page="template/taskfooter" task_id="snooker") ==
 
== include(page="template/taskfooter" task_id="snooker") ==

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.