Giả sử có nhà máy bóng với n bóng được đánh số từ l đến r (tính cả hai đầu) và có vô hạn hộp đánh số từ 1 đến vô cùng. Mỗi bóng được đặt vào hộp có số bằng tổng các chữ số của số bóng. (Ví dụ: bóng số 123 → hộp số 1+2+3=6). Cho hai giá trị l và r, ta phải tìm số bóng trong hộp chứa nhiều bóng nhất.
Ví dụ: l = 15, r = 25, kết quả là 2 vì hộp 6 và 7 đều chứa 2 bóng (số 15,24 vào hộp 6; số 16,25 vào hộp 7).
Giải thuật
dict := new map- For
itừlđếnr:total := 0- Với mỗi chữ số
jcủai:total += j - Nếu
totalchưa có trongdict:dict[total] := 0 dict[total]++
- Trả về giá trị lớn nhất trong
dict
Ví dụ (Python)
def solve(l, r):
dict = {}
for i in range(l, r + 1):
total = 0
for j in str(i):
total += int(j)
if total not in dict:
dict[total] = 0
dict[total] += 1
return max(dict.values())
l = 15
r = 25
print(solve(l, r))
Input
15, 25
Output
2