Matura informatyka zbiór zadań. Zadanie 65 - Ułamki.

Kliknij i wspomóż mnie :)

Python

Wstęp

Arkusz z zadaniem znajdziesz tutaj:

Matura_Zbiór_zadań_Informatyka

Repozytorium z danymi i rozwiązaniem:

Github

W pliku dane_ulamki.txt znajduje się 1000 par liczb naturalnych dodatnich, mniejszych niż 12 000. Każda para liczb jest zapisana w osobnym wierszu, liczby w wierszu rozdzielone są pojedynczym znakiem odstępu. Parę liczb zapisanych w tym samym wierszu interpretujemy jako ułamek, którego licznikiem jest pierwsza liczba, a mianownikiem — druga liczba.

Odczytywanie danych

Przy ułamkach istotny jest sposób przechowywania informacji o liczniku i mianowniku. Ja zdecydowałem się na tablicę dwuwymiarową.

Każdy ułamek reprezentuje tablica gdzie liczby[0] to licznik, a liczby[1] to mianownik. W późniejszym zapisie odwołuję się już jak do tablicy dwuwymiarowej.

Minimalny ułamek

Podaj ułamek o minimalnej wartości. Jeśli w pliku występuje więcej niż jeden taki ułamek, to podaj ten spośród nich, który ma najmniejszy mianownik. Twoja odpowiedź powinna zawierać parę liczb oznaczającą licznik i mianownik ułamka.

Mimo, że kod jest trochę długi to jest to tak na prawdę algorytm na minimalną wartość tyle, że sprawdzamy najpierw wartość, a później mianownik. Warto pamiętać żeby przynajmniej licznik oznaczyć jako float. W innym wypadku python zwróci liczbę całkowitą.

Postać nieskracalna

Podaj liczbę zapisanych w pliku ułamków, które zostały podane w postaci nieskracalnej.

Tutaj został zastosowany prosty trik z NWD. Jeżeli największym wspólnym dzielnikiem licznika i mianownika jest 1 to na pewno jest to ułamek nieskracalny.

Zamiana na ułamek nieskracalny

Zapis danych w postaci nieskracalnej uzyskamy, zamieniając każdy ułamek na jego postać nieskracalną. Podaj sumę liczników wszystkich podanych w pliku ułamków, jaką otrzymalibyśmy po sprowadzeniu ułamków do nieskracalnej postaci.

Tutaj ponownie wykorzystujemy nwd. Licznik skrócony maksymalnie to licznik podzielony przez nwd tego ułamka. Później już wystarczy tylko zliczyć sumę.

Suma ułamków

Ułamki w pliku zostały tak dobrane, że każdy mianownik jest dzielnikiem liczby `b=2^2 * 3^2 * 5^2 * 7^2 * 13`, a wartość każdego ułamka jest nie większa niż 3. Oznacza to, że sumę wszystkich ułamków można przedstawić jako ułamek , którego mianownikiem jest `b=2^2 * 3^2 * 5^2 * 7^2 * 13`. Wyznacz sumę ułamków ze wszystkich wierszy i podaj licznik takiego ułamka, że suma ułamków jest równa `a/b`

W ostatnim zadaniu musimy przemnożyć licznik każdego ułamka przez liczbę b oraz taką sumę jeszcze raz przez liczbę b podzielić.

Teraz zostaje już tylko wywołać nasze funkcje.

Dziękuję Ci za przeczytanie tego materiału 😀 Jeżeli spodobało Ci się to o czym piszę, możesz sprawdzić więcej materiałów na blogu lub udostępnić znajomym. Będzie mi bardzo miło 😊

O mnie

Jestem młodym programistą, który dumnie dzierży wiele pasji takich jak bieganie czy piwowarstwo domowe. Jedną z nich jest także programowanie i o tym właśnie zamierzam tutaj pisać.

Zobacz więcej

Najnowsze posty

Kliknij i wspomóż mnie :)

Zostańmy w kontakcie

* Wymagane
Kliknij i wspomóż mnie :)
shop
Otwórz Sklep Play

Zachęcam Cię do odwiedzenia mojej strony na Google Play store i sprawdzenia wszystkich moich aplikacji.