شمردنِ سخت
برنامهای بنویسید که تعداد بیتهای 1 را در نمایش دودویی یک عدد صحیح ورودی، محاسبه و چاپ کند. به عبارت دیگر، به شما یک عدد داده میشود و شما باید معادل باینری آن را پیدا کرده و سپس تعداد رقمهای 1 موجود در آن نمایش باینری را بشمارید.
- کد یک خطی: راهحل شما باید فقط در یک خط کد پایتون نوشته شود.
- عدم استفاده از
;وexec: استفاده از سمیکالن (;) برای جدا کردن دستورات در یک خط و تابعexecمجاز نیست.
یافتن یک راهحل پایتونیک و مختصر. به جای استفاده از حلقههای
forوwhile، به دنبال راههای کوتاهتر و خواناتر باشید.
📥 ورودی
برنامهی شما باید یک عدد صحیح n را از تنها خط ورودی دریافت کند.
📤 خروجی
برنامهی شما باید تعداد بیتهای 1 موجود در نمایش دودویی عدد ورودی را محاسبه کرده و در تنها خط خروجی چاپ کند.
🎯 نمونه
ورودی ۱
3
خروجی ۱
2
نمایش دودویی عدد ۳، 11 است که شامل ۲ بیت 1 میباشد.
ورودی ۲
14
خروجی ۲
3
نمایش دودویی عدد ۱۴، 1110 است که شامل ۳ بیت 1 میباشد.
💡 راهنمایی
روشهای مختلف برای حل
- روش ۱: استفاده از
bin()وcount() - روش ۲: استفاده از
format()وcount() - روش ۳: استفاده از
int.bit_count()(پایتون ۳.۸+)
# روش ۱: استفاده از bin() و count()
print(bin(int(input())).count("1"))
# روش ۲: استفاده از format() و count()
print(format(int(input()), "b").count("1"))
# روش ۳: استفاده از bit_count() (پایتون ۳.۸+)
print(int(input()).bit_count())
bin(n)→ عدد را به رشتهی دودویی با پیشوند"0b"تبدیل میکند.format(n, "b")→ عدد را به رشتهی دودویی بدون پیشوند تبدیل میکند.str.count("1")→ تعداد کاراکترهای"1"را در رشته میشمارد.int.bit_count()→ تعداد بیتهای1را مستقیماً محاسبه میکند (سریعترین روش).
- روش ۱ و ۲: باید از
input()وprint()در یک خط استفاده کنید.- روش ۳:
int.bit_count()از پایتون ۳.۸ به بعد در دسترس است.- تمام روشهای بالا یک خطی هستند و از
;وexecاستفاده نمیکنند.
✅ این تمرین را در ویرایشگر خود پیادهسازی کنید. به یاد داشته باشید که کد شما باید یک خطی باشد!
نمونهها
3
2
14
3
برای نوشتن پاسخ و دریافت امتیاز، ابتدا وارد حساب شوید.
ورود