# Przykładowe dane wejściowe n = 9 miasta = [1, 1, 777, 42, 777, 1, 42, 1, 777] # Zliczanie wystąpień każdego miasta from collections import Counter liczba_znaczkow_na_miasto = Counter(miasta) # Obliczanie częstotliwości występowania liczby znaczków z każdego miasta czestotliwosci = list(liczba_znaczkow_na_miasto.values()) # Zliczanie, ile razy każda liczba znaczków się pojawia czestotliwosci_znaczkow = Counter(czestotliwosci) # Lista do przechowywania maksymalnej liczby znaczków, które mogą zostać rozdane dla każdego k wyniki = [] # Obliczanie dla każdego k for k in range(1, n + 1): # Dla danego k, obliczamy ile znaczków można rozdać # Iterujemy po liczbie znaczków, a następnie sprawdzamy ile razy ta liczba się pojawia # i ile maksymalnie znaczków możemy rozdać biorąc pod uwagę to k rozdane_znaczki = 0 for liczba_znaczkow, ile_miast in czestotliwosci_znaczkow.items(): # Dla każdej liczby znaczków, sprawdzamy ile razy można rozdać pełne serie po k rozdane_znaczki += (liczba_znaczkow // k) * k * ile_miast wyniki.append(rozdane_znaczki) wyniki
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | # Przykładowe dane wejściowe n = 9 miasta = [1, 1, 777, 42, 777, 1, 42, 1, 777] # Zliczanie wystąpień każdego miasta from collections import Counter liczba_znaczkow_na_miasto = Counter(miasta) # Obliczanie częstotliwości występowania liczby znaczków z każdego miasta czestotliwosci = list(liczba_znaczkow_na_miasto.values()) # Zliczanie, ile razy każda liczba znaczków się pojawia czestotliwosci_znaczkow = Counter(czestotliwosci) # Lista do przechowywania maksymalnej liczby znaczków, które mogą zostać rozdane dla każdego k wyniki = [] # Obliczanie dla każdego k for k in range(1, n + 1): # Dla danego k, obliczamy ile znaczków można rozdać # Iterujemy po liczbie znaczków, a następnie sprawdzamy ile razy ta liczba się pojawia # i ile maksymalnie znaczków możemy rozdać biorąc pod uwagę to k rozdane_znaczki = 0 for liczba_znaczkow, ile_miast in czestotliwosci_znaczkow.items(): # Dla każdej liczby znaczków, sprawdzamy ile razy można rozdać pełne serie po k rozdane_znaczki += (liczba_znaczkow // k) * k * ile_miast wyniki.append(rozdane_znaczki) wyniki |