Cho số nguyên n, kiểm tra xem tần suất xuất hiện của mỗi chữ số (0-9) có ≤ giá trị của chính chữ số đó không.
Ví dụ: n = 5162569 → tần suất: 5(2), 1(1), 6(2), 2(1), 9(1) → tất cả ≤ chữ số tương ứng → True.
Thuật toán
- Với mỗi chữ số
itừ 0 đến 9, đếm số lần xuất hiện trongn. - Nếu đếm >
i→ trả vềFalse. - Duyệt hết →
True.
Triển khai
def solve(n):
for i in range(10):
temp = n
cnt = 0
while temp:
if temp % 10 == i:
cnt += 1
if cnt > i:
return False
temp //= 10
return True
s = 5162569
print(solve(s)) # True
Đầu vào / Đầu ra
Input: 5162569
Output: True
Cải tiến: Dùng collections.Counter(str(n)) để đếm nhanh hơn.