Dość trudne zadanie.
Trzeba je zrobić na zasadzie zdarzeń przeciwnych
Wszystkich kombinacji jest
\Omega = 10^5 = 100000
Szukamy liczby kodów, których:
A liczba unikalnych cyfr wynosi 1 lub 2
lub
B są same parzyste lub nieparzyste
K_{A} = 10 + 10 * 9 * (\frac{5!}{3! \cdot 2!} + \frac{5!}{4! \cdot 1!})
Opis:
10 wzięła się stąd, że istnieje dokładnie 10 kodów w postaci 11111,22222,33333…
10 * 9 * (\frac{5!}{3! \cdot 2!} + \frac{5!}{4! \cdot 1!}) - liczba kodów gdzie liczba cyfr wynosi 2. 2 Liczby mogę wybrać na 10 * 9 sposobów. Może być tak, że jedna cyfra powtarza się 3 razy a druga 2 razy lub jedna cyfra powtarza się 4 razy a druga tylko 1 (stąd to wyrażenie w nawiasie). Cyfry te mogą stać na 5! sposobów, ale trzeba pamiętać o tym, że to są takie same cyfry więc kolejność jest nie istotna dlatego dzieli się na liczbę możliwych ułożeń tych cyfr względem siebie.
K_{B} = 2 * 5^5
W tym momencie liczba kodów wyniosłaby
\Omega - K_{A} - K_{B}
Zdarzenia KA i KB mają jednak część wspólną ponieważ istnieją kody, których cyfry są tylko parzyste lub nieparzyste i których liczba unikalnych cyfr wynosi 2 należy więc dodać część wspólną kodów A i B. Takich kodów jest
K_{A \cap B} = 2*10 + 2 * 5 * 4 * (\frac{5!}{3! \cdot 2!} + \frac{5!}{4! \cdot 1!})
Opis:
2*5 - to liczba liczb parzystych i nieparzystych w postaci 11111,22222,…
2 * 5 * 4 * (\frac{5!}{3! \cdot 2!} + \frac{5!}{4! \cdot 1!}) - bardzo podobnie jak powyżej w opisie jednak tutaj mówimy tylko o liczbach parzystych lub nieparzystych (stąd podwojenie na początku). Jeżeli już wiadomo czy liczba będzie parzysta czy nieparzysta. Pierwszą mogę wybrać na 5 sposobów a drugą na 4 sposoby.
\Omega - K_{A} - K_{B} + K_{A \cap B} = 93000
Jakbyś miał jakieś pytania to pisz. Wiem, że przeskoczyłem wiele miejsc, ale zakładam, że masz pewne podstawy.
Zadanie zostało sprawdzone - napisałem program komputerowy, który sprawdził wszystkie te liczby (język nazywa się Python)
wynik = 0
for n in range(100000):
liczby = str(n).zfill(5)
liczba_unikalnych = len(set(liczby))
liczba_parzystych = len([k for k in liczby if int(k) % 2 == 0])
liczba_nieparzystych = len([k for k in liczby if int(k) % 2 == 1])
if liczba_unikalnych >= 3 and liczba_parzystych > 0 and liczba_nieparzystych > 0:
wynik += 1
print wynik