Programozó versenyek

Magas szintű programozási nyelvek 2, 2014. december 22., H8 ZH

2014. december 22. 8:15 – 2014. december 22. 11:45

Csatornák

Az ördögbe! Nemcsak hogy elaludtam (és ma van a verseny napja!), de ráadásul elakadtam valahol Delftben útban a szállodától a verseny helyszínére. Körülöttem mindenfelé ezek a városi csatornák (grachten), amelyek sok városban megtalálhatók itt Hollandiában. Sietnem kell, mert az Északnyugat-európai Regionális Verseny (NWERC) pár perc múlva kezdődik.

Tovább rontja a helyzetet, hogy Delftben városszerte lezártak néhány hidat egy kerékpárverseny miatt. Emiatt úgy döntöttem, hogy inkább átugrok pár csatornát, mintsem hogy keresgéljem a szabad hidakat.

Mindenki tudja, hogy a hozzám hasonló informatikusok jók az algoritmusokban, de nem valami jó atléták. Ráadásul kissé nyúlszívű vagyok, és nem akarok vizes lenni. Szükségem van tehát a segítségedre annak kiszámításában, hogy mekkora távolságot kell átugranom egy-egy csatorna fölött.

Szerencsére tegnap részt vettem a delfti városközpontban szervezett kiránduláson, ahol észrevettem, hogy Delftben minden járdakő négyzet alakú és azonos méretű. Így elvégezhetek pár mérést a csatorna felém eső oldalán (az egységek a járdakövek):


1. ábra: Az első példa bemenet illusztrációja.

Elsétáltam a C pontból a D pontba az A és B pontokon keresztül, miközben megszámoltam a járdaköveket.

Az A és C pontok mindig a csatorna partján vannak. A B és D pontok azonos távolságra esnek a csatornától. A T célpont mindig a csatorna túlpartján van; ez a BA és a DC egyenesek metszéspontja. Az AT és az AC egyenesek által bezárt szög 90 fokos, a csatorna két partja pedig párhuzamos egymással.

A feladatod, hogy kiszámítsd A és T távolságát (azaz az átugrandó távolságot).

A bemenet specifikációja

Minden tesztesethez egy sor tartozik a bemeneten, amelyben három pozitív egész szám található: az A és B pontok, az A és C pontok, valamint a B és D pontok távolsága.

Feltételezheted, hogy egyik távolság sem haladja meg az 1000-et, és hogy a B és D pontok távolsága nagyobb az A és C pontok közötti távolságnál.

A kimenet specifikációja

Minden tesztesetre egyetlen sort kell a kimenetre írni, amely A és T távolságát tartalmazza egyszerűsített törtként (azaz eltávolítva a számláló és a nevező közös tényezőit).

Példa bemenet

  1. 5 3 7
  2. 5 3 8
  3. 1 2 3
  4. 23 42 47
  5. 500 500 1000
  6. 1 1 1000
letöltés szöveges állományként

A példa bemenethez tartozó kimenet

  1. 15/4
  2. 3/1
  3. 2/1
  4. 966/5
  5. 500/1
  6. 1/999
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.