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

โปรแกรมหาจำนวนบอลสูงสุดในกล่องโดยใช้ Python


สมมติว่าเรามีโรงงานลูกบอลที่เรามีลูก n ลูกตั้งแต่ l ถึง r (รวมทั้งสองอย่าง) และมีจำนวนกล่องนับไม่ถ้วนตั้งแต่ 1 ถึงอินฟินิตี้ ดังนั้นถ้าเราใส่ลูกบอลแต่ละลูกในกล่องที่มีตัวเลขเดียวกันกับผลรวมของตัวเลขของลูกบอล (เช่น บอลหมายเลข 123 จะถูกใส่ในช่องหมายเลข 1 + 2 + 3 =6) ดังนั้นหากเรามีสองค่า l และ r เราต้องหาจำนวนลูกบอลในกล่องที่มีลูกบอลมากที่สุด

ดังนั้น หากอินพุตเป็น l =15 r =25 เอาต์พุตจะเป็น 2 เพราะ

  • บอลหมายเลข 15 จะใส่เข้าไป 1+5 =6

  • บอลหมายเลข 16 จะใส่เข้าไป 1+6 =7

  • ลูกเบอร์ 17 จะใส่เข้าไป 1+7 =8

  • บอลหมายเลข 18 จะใส่เข้าไป 1+8 =9

  • บอลหมายเลข 19 จะใส่เข้าไป 1+9 =10

  • ลูกบอลหมายเลข 20 จะถูกใส่เข้าไปข้างใน 2+0 =2

  • บอลหมายเลข 21 จะใส่เข้าไป 2+1 =3

  • ลูกบอลหมายเลข 22 จะถูกใส่เข้าไปข้างใน 2+2 =4

  • ลูกบอลหมายเลข 23 จะถูกใส่เข้าไปภายใน 2+3 =5

  • ลูกบอลหมายเลข 24 จะถูกใส่เข้าไปข้างใน 2+4 =6

  • ลูกบอลหมายเลข 25 จะถูกใส่เข้าไปข้างใน 2+5 =7

ดังนั้นกล่อง 6 และ 7 มีจำนวนลูกบอลสูงสุด นั่นคือเหตุผลที่คำตอบคือ 2

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • dict:=แผนที่ใหม่

  • สำหรับฉันอยู่ในช่วง l ถึง r ทำ

    • ทั้งหมด:=0

    • สำหรับแต่ละหลัก j ของ i ทำ

      • รวม :=รวม + j

    • ถ้ายอดรวมไม่มีอยู่ใน dict แล้ว

      • dict[รวม] :=0

    • dict[รวม] :=dict[รวม] + 1

  • คืนค่าสูงสุดของค่าทั้งหมดสำหรับคีย์ทั้งหมดใน dict

ตัวอย่าง (Python)

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

def solve(l, r):
   dict={}
   for i in range(l, r+1):
      total=0
      for j in str(i):
         total += int(j)
      if(total not in dict):
         dict[total] = 0
      dict[total] += 1
   return max([dict[i] for i in dict])

l = 15
r = 25
print(solve(l, r))

อินพุต

15, 25

ผลลัพธ์

1