Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมนับจำนวน Special Numbers ในช่วงที่กำหนดใน Python

Special Number คือจำนวนเต็มบวกที่มีเพียง 1 หลักในรูปแบบทศนิยม (1-9) หรือจำนวนที่มีหลักมากกว่า 1 แต่หารด้วยจำนวนหลักของมันลงตัว และผลหารก็เป็น Special Number ด้วย

ตัวอย่าง

อินพุต: left_limit = 5, right_limit = 30 → เอาต์พุต: 13

Special numbers ในช่วง: 5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 20, 24, 28

วิธีแก้ปัญหา

  1. ถ้า right_limit < 10 คืนค่า right_limit - left_limit + 1
  2. สร้างลิสต์ number_list เริ่มต้นด้วยค่าพื้นฐาน
  3. สร้าง Special Numbers เพิ่มเติมโดยคูณค่าที่มีอยู่กับจำนวนหลัก
  4. กรองค่าที่อยู่ในช่วงและนับจำนวน

ตัวอย่างโค้ด

def strange(left_limit, right_limit):
    if right_limit < 10:
        return right_limit - left_limit + 1
    
    len_right = len(str(right_limit))
    number_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 18]
    
    for j in range(2, len_right + 1):
        for k in number_list:
            temp1 = k * j
            if len(str(temp1)) == j:
                number_list.append(temp1)
            elif len(str(temp1)) > j:
                break
            if number_list[-1] >= right_limit:
                break
    
    number_list = list(set(number_list))
    count = 0
    for temp2 in number_list:
        if left_limit <= temp2 <= right_limit:
            count += 1
    return count

print(strange(5, 30))

อินพุต / เอาต์พุต

Input:  5, 30
Output: 13

หมายเหตุ: อัลกอริทึมสร้าง Special Numbers แบบ dynamic programming โดยใช้ค่าที่รู้จักแล้วคูณกับจำนวนหลัก