Programozó versenyek

DEIK Regionális Programozó Csapatverseny, egyetemi/főiskolai kategória, 2015. november 29.

2015. november 29. 10:40 – 2015. november 29. 15:40

Ismétlődő számjegyek

Az 1/33 tört tizedes tört alakja 0.03, ahol a 03 azt jelöli, hogy a 03 ciklus végtelenszer ismétlődik közbeékelt számjegyek nélkül. Valójában minden racionális szám (tört) tizedes tört alakjában van egy ismétlődő ciklus, ellentétben az irracionális számok tizedes tört alakjával, amelyekben nincs ilyen.

Az alábbi táblázatban példák láthatók egy-egy racionális szám tizedes tört alakjára és az ismétlődő ciklusára. A ciklus fölé elhelyezett vízszintes vonal helyett itt zárójelbe tesszük az ismétlődő ciklust.

Tört Tizedes tört alak Ismétlődő ciklus A ciklus hossza
1/6 0.1(6) 6 1
5/7 0.(714285) 714285 6
1/250 0.004(0) 0 1
300/31 9.(677419354838709) 677419354838709 15
655/990 0.6(61) 61 2

Írj egy programot, amely törtek számlálóit és nevezőit olvassa be, majd meghatározza az ismétlődő ciklusaikat!

Ebben a feladatban egy tört ismétlődő ciklusát úgy definiáljuk, hogy az az első olyan minimális hosszúságú számjegysorozat a tizedesponttól jobbra, amely végtelenszer ismétlődik közbeékelt számjegyek nélkül. Így például az 1/250 tört ismétlődő ciklusa a 0, amely a 4. pozíción kezdődik (nem pedig az a 0, amelyik az 1. vagy a 2. pozíción kezdődik, sem pedig a 00, amely az 1. vagy a 4. pozíción kezdődik).

A bemenet specifikációja

A bemenet minden sora egy nemnegatív egész számlálóból és egy pozitív egész nevezőből áll. Egyik egész szám sem haladja meg a 3000-et. A bemenet végét a fájlvégjel (EOF) jelzi.

A kimenet specifikációja

A bemenet minden sorára a kimenetre kell írni a törtet, annak a tizedes tört alakját a tizedesponttól jobbra a ciklus első előfordulásáig vagy 50 tizedesjegyig (amelyik hamarabb előfordul), a következő sorban a teljes ismétlődő ciklus hosszát, végül egy üres sort. Lásd a példa kimenetet a pontos formátumért!

A tizedes tört felírásánál tedd zárójelbe az ismétlődő ciklust, amennyiben lehetséges! Ha a teljes ismétlődő ciklus nem fér el az első 50 tizedesjegyben, tedd ki a nyitó zárójelet a ciklus kezdeténél – amely az első 50 tizedesjegyen belül lesz –, és írd ki a „...)” sztringet az 50. számjegy után.

Példa bemenet

  1. 76 25
  2. 5 43
  3. 1 397
letöltés szöveges állományként

A példa bemenethez tartozó kimenet

  1. 76/25 = 3.04(0)
  2.    1 = number of digits in repeating cycle
  3. 5/43 = 0.(116279069767441860465)
  4.    21 = number of digits in repeating cycle
  5. 1/397 = 0.(00251889168765743073047858942065491183879093198992...)
  6.    99 = number of digits in repeating cycle
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.