Darmowe konto pozwoli wrócić do niego później.
Polecenie
Napisz w wybranej przez siebie notacji (w postaci pseudokodu, listy kroków lub w wybranym języku programowania) algorytm, który dla danej dodatniej liczby wymiernej a < 1, zadanej w postaci p/q (gdzie p, q – liczby całkowite dodatnie, p < q), wypisze jej rozkład na sumę ułamków egipskich.
Uwaga: w zapisie możesz wykorzystać tylko operacje arytmetyczne (dodawanie, odejmowanie, mnożenie, dzielenie, dzielenie całkowite, reszta z dzielenia), porównywanie liczb, wypisywanie liczb, instrukcje sterujące i przypisania do zmiennych lub samodzielnie napisane funkcje zawierające wyżej wymienione operacje. Możesz również wykorzystać funkcję zaokrąglającą wartość liczby rzeczywistej do najmniejszej liczby całkowitej nie mniejszej od danej liczby (tzw. sufit).
Specyfikacja:
Darmowe konto pozwoli wrócić do niego później.
p, q – dodatnie liczby całkowite, p < q
Wynik:
ciąg k różnych liczb dodatnich, całkowitych n₁< n₂< … < nₖ, gdzie k > 0, taki, że p/q = 1/n₁+1/n₂+ ⋯+1/nₖ
Przykład: dla p = 4 i q = 5 poprawnym wynikiem działania algorytmu jest ciąg liczb 2, 4, 20.
Algorytm:
void ul_egipt(int p, int q)
{
if (p>0)
{
int m=ceil(float(q)/p);
cout<<m<<" ";
ul_egipt(p*m-q,q*m);
}
}
Alternatively: iterative implementation using while loop instead of recursion.
poprawny algorytm. 1 pkt – warunek początkowy. 2 pkt – użycie poprawnej metody wyznaczania mianownika ułamków. 1 pkt – wyprowadzenie właściwego wyniku.
Algorytm wykorzystuje rekurencję lub iterację do rozkładu. Warunkiem przerwania jest p=0.
Ocena według schematu punktowania CKE, zwykle w 15–30 s
Dowiedz się, ile punktów naprawdę zdobywasz. Zrób zdjęcie kartki albo wklej odpowiedź: Maturownik+ porówna ją ze schematem punktowania, policzy punkty i wytłumaczy, gdzie i dlaczego je tracisz.