ধরি আমাদের একটি সংখ্যা n আছে। আমাদের যাচাই করতে হবে n-র প্রতিটি ডিজিটের ঘটনা সংখ্যা (ফ্রিকোয়েন্সি) সেই ডিজিটের মান থেকে কম বা সমান কিনা।
উদাহরণস্বরূপ, n = 5162569 হলে আউটপুট হবে True, কারণ ডিজিট ও ফ্রিকোয়েন্সি জোড়াগুলো: (5, 2), (1, 1), (6, 2), (9, 1) — সবখানেই ফ্রিকোয়েন্সি ডিজিটের মান থেকে কম বা সমান।
সমাধানের ধাপসমূহ
- 0 থেকে 9 পর্যন্ত প্রতিটি ডিজিট i-এর জন্য:
- temp := n, cnt := 0
- যতক্ষণ temp শূন্য না হয়:
- যদি temp % 10 == i, তবে cnt বাড়ান
- যদি cnt > i, তবে false রিটার্ন করুন
- temp := temp // 10
- true রিটার্ন করুন
উদাহরণ
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))
ইনপুট
5162569
আউটপুট
True