Problem A - Zagadka z kołków
Problem B - Dziesiętne ułamki okresowe
Problem C - Zamiana liczb arabskich na rzymskie
Problem D - Poprawki szybkościomierza

 

1979

Problem B - Dziesiętne ułamki okresowe


Opis

Gdy x i y są liczbami całkowitymi, liczba wymierna x/y posiada postać dziesiętną:

 

iiii.fffff...

 

Jeśli od pewnego miejsca wszystkie dalsze cyfry f są zerami, to zwykle opuszcza się je i można zapisać dokładny odpowiednik dziesiętny danej liczby wymiernej. Inaczej ciąg cyfr ułamkowych (f = fraction) jest nieskończony, lecz w końcu stanie się powtórzeniami pewnego podciągu. Oznaczając powtarzający się podciąg za pomocą literek r, okresowy ułamek dziesiętny używa następującej notacji:

 

iii.fffff(r1...rk)

 

w celu zapisu okresowego odpowiednika nieskończonego ułamka dziesiętnego:

 

iii.fffffr1...rkr1...rkr1...rk...

 

Na przykład:

 

22  = 3.(142857)       5  = 0.41(6)       100  = 9.(09)
7 12 11

 

Zwróć uwagę, że powtarzany ciąg cyfr znajduje się na końcu zapisu liczby i występuje tylko w części ułamkowej.

Napisz program, który:

  1. Odczyta wiersz zawierający dwie liczby całkowite dodatnie, powiedzmy x i y.
  2. Wyprowadzi dwa puste wiersze, a następnie wypisze trzy wiersze z ułamkiem oraz jego okresowym zapisem dziesiętnym. Jeśli ułamek będzie wymagał więcej niż 50 cyfr na prawo od kropki dziesiętnej (ułamki dziesiętne zapisujemy w systemie anglosaskim z kropką zamiast przecinka), należy wypisać wiersz pokazujący wartości x i y oraz wiadomość z informacją o tym utrudnieniu. Jeśli liczba wymierna posiada skończony odpowiednik dziesiętny, program powinien wypisać go bez okresu w nawiasie oraz bez zer końcowych.
  3. Należy powtarzać procedurę od kroku 1, aż zostanie napotkany wiersz, w którym druga liczba y = 0. Wtedy program powinien zakończyć działanie.

 

Specyfikacja wejścia

Na wejściu program otrzymuje ciąg wierszy. W każdym wierszu znajdują się dwie nieujemne liczby całkowite x i y, rozdzielone spacją. W ostatnim wierszu druga z liczb jest równa zero. Po napotkaniu ostatniego wiersza program kończy działanie. Liczby x i y będą posiadały co najwyżej 10 cyfr.

 

Specyfikacja wyjścia

Dla każdego wiersza wejściowego z niezerową liczbą y program powinien wypisać trzy wiersze o następującej postaci:

         x
---------- = iii.fff(rrr)
         y

gdzie

x, y - wejściowe liczby całkowite
i - cyfry całkowite
f - cyfry ułamkowe
r - cyfry okresu

 

Przykładowe dane wejściowe

27836 462
1 252
2 17
300030003 16
0 0

 

Przykładowe dane wyjściowe

     27836
---------- = 60.(251082)
       462


         1
---------- = 0.00(396825)
       256


         2
---------- = 0.(1176470588235294)
        17


 300030003
---------- = 18751875.1875
        16

 



List do administratora Serwisu Edukacyjnego Nauczycieli I LO

Twój email: (jeśli chcesz otrzymać odpowiedź)
Temat:
Uwaga: ← tutaj wpisz wyraz  ilo , inaczej list zostanie zignorowany

Poniżej wpisz swoje uwagi lub pytania dotyczące tego rozdziału (max. 2048 znaków).

Liczba znaków do wykorzystania: 2048

 

W związku z dużą liczbą listów do naszego serwisu edukacyjnego nie będziemy udzielać odpowiedzi na prośby rozwiązywania zadań, pisania programów zaliczeniowych, przesyłania materiałów czy też tłumaczenia zagadnień szeroko opisywanych w podręcznikach.



   I Liceum Ogólnokształcące   
im. Kazimierza Brodzińskiego
w Tarnowie

©2017 mgr Jerzy Wałaszek

Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.