.campion
conectare | înregistrare | căutare
Pagina principală » Probleme » biliard

ultima problemă
grupă: mică
sursă: OMI 2016
ultimul articol
autor: Prof. Radu Vişinescu
ultimul software
autor: Prof. Emanuela Cerchez
 .campion
biliard


Timp maxim de execuţie/test:
0.1 secunde
Memorie totală disponibilă/stivă:
16MB/1 MB

Gigel s-a hotărât să realizeze un joc de biliard. Pentru a scrie acest program, a studiat mai multe jocuri asemănătoare de pe Internet, apoi s-a apucat de o variantă premergătoare a jocului în care studiază ciocnirea cu peretele şi căderea bilei în buzunarul mesei de biliard. Masa de biliard este un dreptunghi de dimensiuni mxn. In cele patru colţuri ale mesei există câte un buzunar. Bila este reprezentată printr-un punct şi are o mişcare uniformă liniară, adică are viteză constantă de-a lungul unei drepte. În momentul ciocnirii cu un perete, bila se va reflecta cu acelaşi unghi faţă de perete pe care l-a avut înainte de ciocnire.

În timpul creării programului, Gigel s-a confruntat cu problema poziţiilor intermediare de coordonate reale. Şi pentru a avea control asupra datelor problemei, a introdus următoarele reguli:

1. Deplasarea bilei va fi definită prin perechea (x,y), ceea ce înseamnă că într-o unitate de timp bila va parcurge o distanţă de traiectorie oblică ce corespunde distanţei x pe axa orizontală şi distanţei y pe axa verticală. Astfel chiar dacă drumul trece prin puncte de coordonate reale, după fiecare unitate de timp va ajunge într-un punct cu coordonate întregi.

2. Pe parcursul mişcării bilei, buzunarele sunt închise şi se deschid pentru câte o clipă după ce a trecut exact o unitate de timp, apoi iar se închid şi se vor deschide din nou după expirarea următoarei unităţi de timp, ş.a.m.d. Dacă bila se află la vreun buzunar când acesta este deschis, ea va cădea în buzunar, altfel bila îşi va continua traiectoria printr-o întoarcere de 180 de grade fapt datorat ciocnirii cu colţul mesei.

Cele patru colţuri ale mesei sunt numerotate astfel:
1- colţul stânga jos (0,0)
2- colţul dreapta jos (m,0)
3- colţul stânga sus (0,n)
4-colţul dreapta sus (m,n).

Poziţia iniţială a bilei este în punctul (0,0) care în momentul începerii jocului este închis.

În figura de mai sus vedem o masă de dimensiuni 6x7. Bila a fost lansată din colţul 1 cu viteza pe unitate de timp (4,2). S-a trasat traiectoria bilei până la expirarea momentului 4, în acel moment bila a ajuns în punctul de coordonate (4,6). Din acest desen se vede că atât cu peretele vertical (pasul 2), cât şi cu peretele orizontal (pasul 4), traiectoria bilei şi-a păstrat unghiul. Dacă s-ar continua desenarea traiectoriei bilei, am observa că în al 11-lea interval de timp avem o ciocnire de 180 de grade în colţul 4, iar după terminarea intervalului de timp 21 bila va cădea în buzunarul 1.

Cerinţă

Scrieţi un program care să determine poziţia finală a bilei după trecerea a t unităţi de timp, cunoscând coordonatele dimensiunile masei de biliard mxn respectiv direcţia şi forţa loviturii date de perechea (x,y).

Date de intrare

Fişierul de intrare biliard.in conţine pe prima linie numerele naturale m şi n separate prin spaţiu. Linia a doua conţine valorile x şi y separate prin spaţiu. Linia a treia conţine valoarea lui t.

Date de ieşire

Fişierul de ieşire biliard.out va conţine o singură linie pe care vor fi scrise două numere separate prin spaţiu. Semnificaţia acestor două numere diferă în funcţie de situaţie (dacă bila este pe masă sau dacă este într-un buzunar). Dacă bila este pe masă după expirarea celor t unităţi de timp, atunci se vor afişa coordonatele finale xf, respectiv yf ale bilei. Dacă bila a căzut într-un buzunar, atunci se va afişa numărul de unităţi t1 trecute până la ajungerea bilei în buzunar, respectiv numărul b al buzunarului în cauză.

Restricţii

  • 1 <= m, n, x, y <= 2 147 483 647
  • Pentru 40% dintre teste 1 <= m, n, x, y <= 32 767

Exemple

biliard.in biliard.out Explicaţie

6 7
4 2
4

4 6

Datele de intrare sunt conform exemplului din figura de mai sus, masa de biliard este de dimensiuni 6x7, într-o unitate de timp, bila se va deplasa 4 unităţi de măsură pe orizontală şi 2 unităţi de măsură pe verticală. După 4 unităţi de timp bila se va afla în punctul de coordonate (4,6)
biliard.in biliard.out Explicaţie

6 7
4 2
24

21 1

Datele de intrare sunt conform exemplului din figura de mai sus, masa de biliard este de dimensiuni 6x7, într-o unitate de timp, bila se va deplasa 4 unităţi de măsură pe orizontală şi 2 unităţi de măsură pe verticală. După trecerea a 21 unităţi de timp bila va cădea în buzunarul 1, în consecinţă bila nu va mai fi pe masă după trecerea celor 24 de unităţi de timp.

 

prof. Szabó Zoltan
Gr. Şc. "Petru Maior" Reghin
szabozoliposta@yahoo.com
 
propunător: Prof. Emanuela Cerchez
emanuela.cerchez@gmail.com
Articole recomandate
Probleme recomandate
De la .campion 2009: efort, muzeu, bal, seti, basm, dansatori, smith, timer, secvsir, vot, cetati, reziduu, prefix1, accesibil, dp, jocv, placa, palc, prod3, predecesor, standard, cantor, nkbiti, nori, triti, kperms, sotron1, impozit, tablite, fazan, lanturi, secvpar, tom, joker, matriosca, asociativ, lego, medalii, permutari, cfr, treegame, scanduri, site, fotbal, links, kbiti, segm, album, iepurasi, jucarii, m4, bradut, trmv, colorare, greutati, concat, graphgame, ic, echilibru, brazi, mat, cubinvers, mobil, distsir, parbit
De acelaşi autor: balanta, bonuri, cub, magic, magic2, munte, euclid, banda, fractie1, fotbal, arctir, orientare, rege, fibo1, piatra, war, aritm, ssmax, sirmax, ikebana, punctfix, domino2, lant1, parc1, cubulete, biperm, triunghi6, stiva1
Despre divizibilitate: celule, cai, trei, ruleta, an, factori, perechi, anagrame, axa, perspic, scara, programs, iepuras2, fry, policefm, turist, kfactor, cuc, prime, sqr, evaluare, factk, div3, divizor, euclid, stop, matricea, mutare, viteza, ingerasi, prieteni, robinson, romeo, perechi1, sume1, fact, tzigla, cifru2, elfi, vraji, desen2, exponent, trapez, resturi, exp1, ron, spirala1, gardul, tort, poligon3, sume2, smith, printesa, secvente1, ultime4, padure, multiplu1, 235, iepurasi, numar3, cmmmc, randomizare, divizori, pitag, bileprime, pin, canguri, numar4, jocprim, covor, nivfractie, cmmdcsecv, ai, grupe2, numerus, sport2, fagure, grad2, sumdivprod, oak, sumprod, paisprezece, numere10, proddiv, puncte4, trifoi, cartier, alune, intersectii, divider, minm, numere11, prodnr, boltz, vistiernic, secvp, extraprime, divizori1, cumpanit, cntgcd, nrdiv, numere12, daruri, imprimanta, puteri, reflex, tg, sprime, diferenta, concurs4, vapoare, inventie, prime2
Despre structura repetitiva: cifre1, super, schimb, jeton, descfib, taxe, romane, mobile, cuburi3, tzigla, morse, powerpuff, multimi, ucif, tabel, ocr, numere7, cifre2, piramida, vraji, reforma, cartonas, cabina, case, desen2, exponent, cifre3, concurs3, joc13, reactivi, vanatoare, submult, paranteze, tort, copaci1, ogorul, puncte3, efort, muzeu, smith, palc, prod3, fazanr, cadouri, bursa, meteo, prodmax, zar, tren4, lego, maraton1, cluburi, domino1, jump, alo, cifra1, case1, brazi, greiere, divizori, pitag, porumb, secv9, divk, rachete, pin, sumacifre, aritm, psp, triplu, triunghi3, cmmdcsecv, ssmax, ape, furnici1, domino2, acoperire1, ore, pegals, b2k, sumdivprod, subsecvmax, dale, bancomat, sume4, alice, porumb1, albine2, culegere, stele1, medalion, cifreco, meteo1, unupatru, xyz, vistiernic, chibrituri, bete1, greieri, interviu, prieten, prize, conturi, numere12, martisoare, piramide, pagini, punctul, tablita, pavare1, ordine, covor1, speciale, echer, numere13
Chestionare recomandate
surse trimise | ajutor