Strona główna » Algorytmy » Artykuły » Ile lat mają synowie?
?

Ile lat mają synowie?

Treść zadania

Zadanie jest z pozoru proste, ale na zwykłej kartce bardzo czasochłonne:

Matematyk ma trzech synów i musimy określić ich wiek znając iloczyn wieku wszystkich dzieci oraz ilorazu wieku starszego do młodszego.

Przykładowo jeśli iloczyn wszystkich dzieci będzie miał 189 i iloraz wyniesie 3 to jest tylko jedna prawidłowo kombinacja liczb i synowie mają wtedy: 3, 7 i 9 lat.

Także specyfikacja wygląda tak:

Oczywiście dla bardziej ambitnych proponuje napisanie algorytmu, który sprawdzałby ile jest łącznie kombinacji spełniających kryteria zadania.

Rozwiązanie matematyczne

Przyjmijmy następujące zmienne:

Otrzymujemy, że:
, gdzie
na tej podstawie można stwierdzić, że ostateczna funkcja jest postaci .

Wiadomo, że . Szukam w takim razie takiego x, który jest dzielnikiem . Najprostszym sposobem jest dokonać rozkładu . Wybieramy wszystkie zduplikowane liczby z rozkładu i w ten sposób uzyskujemy wiek najmłodszego. Wiek średniego możemy uzyskać na dwa sposoby: ze wzoru lub obliczając iloczyn liczb niezduplikowanych w rozkładzie .

Rozwiązują tym sposobem przykład zadania otrzymujemy, że s = 189 oraz i = 3. Kolejno wykonujemy:

  1. Wyznaczamy wzór funkcji:
  2. Rozkładamy 63 na czynniki pierwsze: {3, 3, 7}
  3. Odczytujemy, że najmłodszy ma 3 lata, średni 7.
  4. Wiek najstarszego najprościej wyliczyć ze wzoru. W tym przypadku otrzymamy 9.

Rozwiązanie informatyczne

Zamieszczone rozwiązanie informatyczne stara się wyznaczyć wszystkie możliwe rozwiązania zadania. Używana jest tu metoda nieco lepsza od brute force. Program wykonuje wszystko dokładnie tak jak zostało wyjaśnione w rozwiązaniu matematycznym.