Na starcie stoi 50 motocykli. Każdy ma pełen bak co pozwala każdemu przejechać dokładnie 100km. Używając ich jak daleko możesz zajechać? Uzasadnij swoją odpowiedź.
Używając wszystkich motocykli można przejechać 350 km (prosta metoda obliczeń).
W celu przedłużenia wycieczki należy przelewać paliwo pomiędzy motocyklami. W zadaniu nie ma informacji, gdzie na koniec mają zostać motocykle. Oznacza to, że można je porzucić po drodze i nie będzie to sprzeczne z zadaniem. Za każdym razem staramy się, aby do jadących dalej motocykli przelać całe paliwo z motocykli, które są przeznaczone do pozostania w trasie.
Paliwo przelewamy, gdy motory przejadą 50km. Oznacza to, że gdy jedzie nieparzysta ilość motocykli to z jednego motoru nie ma gdzie przelać paliwa. W poniższej tabelce zostało przedstawiona ilość motorów na każdym etapie oraz jaki mają zasięg.
Motorów | Przejechali | Komentarz |
---|---|---|
50 | 0 | Po pierwszym etapie zmniejszamy ilość o połową nie tracąc benzyny |
25 | 50 | Jedzie dalej 12 motocykli, jeden zostaje, więc zostaje 50km niewykorzystanego dystansu |
12 | 100 | Dalej jedzie 6 motocykli |
6 | 150 | Dalej jedą 3 motocykle |
3 | 200 | Dalej jedzie jeden motocykl, zostaje niewykorzystane 50km |
1 | 250 | Motor jest pełny, więc jedzie dalej, aż 100km |
0 | 350 | Koniec paliwa w ostatnim motocyklu |
Jak można zauważyć w trakcie przelewania nie udało się przelać wszystkiego.
Poniżej została przedstawiona funkcja jakDaleko(), która pozwala obliczyć jak daleko można zajechać na pewnej ilości pojazdow, które na pełnym baku mogą przejechać zasieg kilometrów. Oczywiście należy pamiętać, że na koniec pozostaje jeden pojazd, który przejedzie cały dystans.
Funkcję można przetestować poprzez uruchomienie poniższego kodu i wprowadzenie odpowiednich danych: