সমস্যা বিবরণ
একটি পূর্ণসংখ্যা N দেওয়া আছে। এই সংখ্যার মোট কতটি ডিজিট (অঙ্ক) আছে তা বের করা। লিডিং জিরো (Leading zeros) গড়ে নেই।
উদাহরণ
- ইনপুট-১: N = 891452 → আউটপুট: ৬
- ইনপুট-২: N = 0074515 → আউটপুট: ৫ (লিডিং ০০ বাদে ৭৪৫১৫ → ৫ ডিজিট)
সমাধানের পদ্ধতি (লুপ দিয়ে)
- কাউন্টার
ans = 0ইনিশিয়ালাইজ করুন। - যবতক
n > 0:ans += 1n = n // 10(শেষ ডিজিট সরান)
ansরিটার্ন করুন।
পূর্ণ কোড উদাহরণ
def countDigits(n):
# স্ট্রিং ইনপুট হলে ইন্টেজার-এ কনভার্ট
if isinstance(n, str):
n = int(n) # লিডিং জিরো অটোমেটিক্যালি বাদ যাবে
ans = 0
while n:
ans += 1
n = n // 10
return ans
# টেস্ট
print("ডিজিট কাউন্ট:", countDigits("45758")) # ৫
print("ডিজিট কাউন্ট:", countDigits(891452)) # ৬
print("ডিজিট কাউন্ট:", countDigits("0074515")) # ৫
আউটপুট
ডিজিট কাউন্ট: 5
ডিজিট কাউন্ট: 6
ডিজিট কাউন্ট: 5
বিকল্প পদ্ধতি (স্ট্রিং দিয়ে - সহজ)
def countDigitsStr(n):
return len(str(n).lstrip('0')) if str(n).lstrip('0') else 1 # ০ এর কেস
print(countDigitsStr("0074515")) # ৫
print(countDigitsStr(0)) # ১
দ্রষ্টব্য: ইন্টিজার হিসেবে ইনপুট নিলে লিডিং জিরো অটোমেটিক্যালি বাদ যায়। স্ট্রিং ইনপুটে lstrip('0') বা int() কনভারশন ব্যবহার করুন।