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

โปรแกรมหาจำนวนองค์ประกอบขั้นต่ำที่ต้องเพิ่มเพื่อให้ได้ผลรวมที่กำหนดใน Python


สมมติว่าเรามีอาร์เรย์ชื่อ nums และสองค่า limit และ goal อาร์เรย์นี้พิเศษเพราะ |nums[i]| <= limit สำหรับทุก i จาก 0 ถึงขนาดอาร์เรย์ - 1 เราต้องหาจำนวนองค์ประกอบขั้นต่ำที่ต้องแทรกเพื่อให้ผลรวมของอาร์เรย์เท่ากับ goal องค์ประกอบอาร์เรย์ไม่ควรเกินค่า limit

เช่น ถ้าอินพุตคือ nums = [2,-2,2], limit = 3, goal = -4 ผลลัพธ์จะเป็น 2 เพราะเราสามารถเพิ่ม (-3) สองตัว ทำให้อาร์เรย์กลายเป็น [2,-2,2,-3,-3]

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

  • s := ผลรวมของทุกองค์ประกอบใน nums
  • ab := |goal - s|
  • return ค่า ceiling ของ (ab / limit)

ตัวอย่าง

from math import ceil

def solve(nums, limit, goal):
    s = sum(nums)
    ab = abs(goal - s)
    return ceil(ab / limit)

nums = [2,-2,2]
limit = 3
goal = -4
print(solve(nums, limit, goal))

อินพุต

[2,-2,2], 3, -4

เอาต์พุต

2.0