Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Zadanie "Wesoła małpka"

Ostatnio zmodyfikowano 2014-12-02 20:10
Autor Wiadomość
Rashmistrz
Temat założony przez niniejszego użytkownika
» 2014-12-01 16:48:13
@Monika90
Jesteś wspaniała. C:
Działa, ale nie wiem dlaczego akurat NWD. :/

W jaki sposób to skróciłaś?

Czasy po przerobieniu:
1d)3.25s/7.00s
1e)3.25s/7.00s
1f)3.25s/7.00s
P-121840
Monika90
» 2014-12-02 14:48:51
Dla przykładu niech klatek będzie n=12, a małpiszon wskakuje na co piętnastą klatkę (d=15). Dla wygody rozwińmy kółko z klatek wraz ze skaczącą po nich małpą w nieskończony ciąg:


0123456789AB0123456789AB0123456789AB0123456789AB0123456789AB0123456789AB01234 itd...
@..............@..............@..............@..............@..............@. itd...
\----------------------------------------------------------/


Widać, że od pewnego momentu układ będzie się powtarzał. Skoro tak, to żeby wiedzieć na ile i na które klatki wskoczy małpa wystarczy przeanalizować ten powtarzający się segment, który zaznaczyłam. Okazuje się, że długość tego segmentu jest równa najmniejszej wspólnej wielokrotności liczb n i d, czyli NWW(n, d), a ilość klatek na które wskoczy małpa jest równa długosci powtarzającego się segmentu podzielonej przez długość skoku, czyli NWW(n, d) / d.
Wiadomo że NWW(n, d) == n * d / NWD(n, d), zatem nasza odpowiedź to: n * d / NWD(n, d) / d, co po uproszczeniu daje: n / NWD(n, d)
P-121932
Rashmistrz
Temat założony przez niniejszego użytkownika
» 2014-12-02 20:10:54
Wielkie dzięki! :D
P-121987
1 « 2 »
Poprzednia strona Strona 2 z 2