مسألة برمجية للتدريب (تحتاج معرفة Binary)

  • Rashadoo

المشكلة تقول كالتالي:

سأعطيك رقمين n , m يمكن من 1 الى 10 قوة 18 .. اريد عدد الارقام التي بينهما (معهما) التي تحوي في تمثيلها الثنائي (الباينري) صفراً واحداً


مثال على الدخل :

n = 5

m = 10

الخرج : 2

لان 5 = 101

و 6 = 110

وباقي الارقام الى عشرة تحوي اكثر من صفر او لا تحوي اصفاراً ابداً


مثال ثاني:

2015 2015

الخرج : 1


مثال اخير :

72057594000000000 72057595000000000

الخرج : 26


ما رأيكم بهذا ؟

def subin(dec) :
    zeros = 0

    while dec > 0:
        if zeros == 2:
            return False

        if dec % 2 == 0:
            zeros += 1

        dec //= 2

    return zeros == 1;

s = 0
for i in range(1, 10):
    if subin(i):
        s += 1
print('sum:', s)

output

sum: 3

اقرأ التعليقات .. تعقيدط كبير جداً

قلت ان الدخل 10 قوة 18 وحاسوب شخصي خارق يحتاج ساعة لمعالجة خوارزميتك