Zadanie 116
Napisz program, który dla podanej wartości n oznaczającej ilość kostek do gry oraz k oznaczającej sumę oczek oblicza prawdopodobieństwo otrzymania w rzucie n kostkami wartości k. Program powinien wymieniać wszystkie możliwe sumy oczek na kostkach równe k. Zakładamy, że kostki są w różnych kolorach i są rozróżnialne (kolejność ma znaczenie), każda kostka ma 6 ścian, a możliwe wartości oczek to 1, 2, 3, 4, 5, 6. Użytkownik wprowadza n i k w formularzu, a program weryfikuje, czy są to liczby całkowite dodatnie, czy k jest możliwe do uzyskania (n <= k <= 6n), i wyświetla wyniki.
Wskazówki dla ucznia:
- Zweryfikuj, czy n i k są liczbami całkowitymi dodatnimi za pomocą is_numeric() i sprawdzenia, czy po konwersji na int nie tracą wartości.
- Sprawdź, czy suma k jest możliwa: minimalna suma to n (wszystkie kostki mają 1), maksymalna to 6n (wszystkie kostki mają 6).
- Całkowita liczba kombinacji dla n kostek to 6^n, co oblicz za pomocą pow(6, n).
- Użyj rekurencji, aby wygenerować wszystkie możliwe kombinacje oczek na n kostkach i zliczyć te, które dają sumę równą k.
- Wyświetl kombinacje w elemencie <pre> dla zachowania formatowania, a prawdopodobieństwo sformatuj do 6 miejsc po przecinku za pomocą number_format().
- Zabezpiecz dane wejściowe za pomocą htmlspecialchars() przy pobieraniu, aby chronić przed XSS.