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