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

Pipes and Cisterns (ท่อและถังเก็บน้ำ) ใน C++

ปัญหา Pipes and cisterns เป็นปัญหาที่พบบ่อยมักและมักรวมอยู่ในข้อสอบแข่งขัน ดังนั้น การเรียนรู้คำถามที่เกี่ยวข้องกับ pipes และ cisterns จึงสำคัญ และคุณควรทราบวิธีแก้ปัญหาเหล่านี้ เนื่องจากไม่ยากนักที่จะเรียนรู้

Pipes and Cisterns (ท่อและถังเก็บน้ำ)

ปัญหาเหล่านี้เกี่ยวข้องกับท่อที่ใช้เติมหรือระบายน้ำออกจากถัง/อ่างเก็บน้ำ/ซิสเทิร์น

นี่คือพื้นฐานบางส่วนของปัญหา pipes และ cisterns:

  • ท่อเป็นท่อเข้า (inlet pipes) หรือท่อออก (outlet pipes) ท่อเข้าเติมน้ำในถัง และท่อออกระบายน้ำออกจากถัง

  • หากท่อเติม/ระบายน้ำใน 'n' ชั่วโมง และความจุของถังคือ 'c' ลิตร ดังนั้นใน 1 ชั่วโมงจะเติม/ระบายน้ำได้ c/n ลิตร

  • ตอนนี้ หากมีท่อบางส่วนเติมน้ำในถังและบางส่วนระบายน้ำออก ทั้งหมดจะทำงานร่วมกันดังนี้:

    1 ชม. = Σ (c/fi) - Σ (c/ej)

    ที่นี่ fi คือเวลาที่ท่อที่ i ใช้เติมถัง และ ej คือเวลาที่ท่อที่ j ใช้ระบายน้ำ

    เครื่องหมายของการคำนวณนี้จะแสดงผลลัพธ์สุดท้ายของท่อทั้งหมด บวกจะเติมถัง และลบจะระบายน้ำออกจากถัง

ตอนนี้ มาแก้ปัญหาบางส่วนที่จะช่วยให้เข้าใจหัวข้อนี้ได้ดีขึ้น:

คำถามที่ 1

หากท่อสองท่อเติมน้ำในถังแยกกันใน 6 ชั่วโมงและ 4 ชั่วโมง จะใช้เวลาเท่าไรในการเติมถังเมื่อเปิดพร้อมกัน?

วิธีแก้

ส่วนของถังที่ถูกเติมโดยท่อ A ในหนึ่งชั่วโมง = 1/6

ส่วนของถังที่ถูกเติมโดยท่อ B ในหนึ่งชั่วโมง = 1/4

ส่วนของถังที่ถูกเติมโดยท่อ A และ B ร่วมกันในหนึ่งชั่วโมง = 1/6 + 1/4 = 5/12

เวลาที่จำเป็นในการเติมถังโดย A และ B ทั้งคู่คือ 12/5 ชั่วโมง

คำถามที่ 2

มีท่อ 3 ท่อในถัง สองท่อเติมน้ำในถังแยกกันใน 10 ชั่วโมงและ 15 ชั่วโมง และท่อที่สามระบายน้ำออกใน 12 ชั่วโมง

หากเปิดท่อทั้งสามพร้อมกัน จะใช้เวลาเท่าไรในการเติม/ระบายน้ำในถัง?

วิธีแก้

ส่วนของถังที่ถูกเติมโดยท่อ A ในหนึ่งชั่วโมง = 1/10

ส่วนของถังที่ถูกเติมโดยท่อ B ในหนึ่งชั่วโมง = 1/15

ส่วนของถังที่ถูกระบายน้ำโดยท่อ C ในหนึ่งชั่วโมง = 1/12

ส่วนของถังที่เติม/ระบายน้ำโดยท่อ A, B และ C ร่วมกันในหนึ่งชั่วโมง = 1/10 + 1/15 - 1/12 = 5/60 = 1/12

ถังจะเติมน้ำ เนื่องจากเครื่องหมายเป็นบวก

เวลาที่ใช้เติมน้ำในถังคือ 12 ชั่วโมง

คำถามที่ 3

มีท่อเข้า 2 ท่อในถัง ทั้งสองท่อทำงานร่วมกันเติมน้ำในถังใน 6 ชั่วโมง ทำงานคนเดียว ท่อหนึ่งใช้เวลาน้อยกว่าอีกท่อ 5 ชั่วโมง ถังจะเต็มในกี่ชั่วโมงถ้าท่อที่ 2 ทำงานคนเดียว?

วิธีแก้

ให้เวลาที่ท่อหนึ่งใช้คือ t ชั่วโมง

เวลาที่ท่อสองใช้คือ t+5 ชั่วโมง

ส่วนของถังที่ถูกเติมโดยท่อหนึ่งในหนึ่งชั่วโมง = 1/t

ส่วนของถังที่ถูกเติมโดยท่อสองในหนึ่งชั่วโมง = 1/(t+5)

ส่วนของถังที่ถูกเติมโดยท่อหนึ่งและสองร่วมกันในหนึ่งชั่วโมง = 1/t + 1/(t+5) = (2t+5)/t*(t+5)

ทั้งสองท่อจะเติมถังร่วมกันใน 6 ชั่วโมง

(2t+5)/t*(t+5) = 1/6
12t + 30 = t2 + 5t
0 = t2 + 5t - 12t - 30
t2 - 7t - 30 = 0
t2 - 10t + 3t - 30 = 0
t(t - 10) + 3(t - 10) = 0
(t + 3)(t - 10) = 0
t = 10 ชั่วโมง

เวลาที่ท่อหนึ่งใช้คือ 10 ชั่วโมง

เวลาที่ท่อสองใช้คือ 15 ชั่วโมง

คำถามที่ 4

มีท่อสามท่อ A, B และ C A เติมถังใน 5 ชั่วโมง B เติมถังใน 15 ชั่วโมง และท่อที่สามระบายน้ำออก หากเปิดทั้งสามท่อพร้อมกัน จะใช้เวลาเพิ่มขึ้น 15 นาที เมื่อเทียบกับการเปิด A และ B ร่วมกัน ท่อ C ใช้เวลาเท่าไรในการระบายน้ำออกจากถัง?

วิธีแก้

ความจุของถังคือ LCM(5,15) = 15 หน่วย

ประสิทธิภาพของท่อ A = 3 หน่วย/ชม.

ประสิทธิภาพของท่อ B = 1 หน่วย/ชม.

ประสิทธิภาพของท่อ A+B = 4 หน่วย/ชม.

เวลาที่ A และ B ใช้เติมถัง = 15/4 = 3 ชั่วโมง 45 นาที

เวลาที่ใช้เติมถังเมื่อเปิดท่อทั้งหมด = 3 ชั่วโมง 45 นาที + 15 นาที = 4 ชั่วโมง

ประสิทธิภาพรวมคือ 15/4 = 3.75 หน่วยต่อชั่วโมง

ประสิทธิภาพของท่อ C = ประสิทธิภาพของท่อ A+B - ประสิทธิภาพรวม = 0.25 หน่วยต่อชั่วโมง

เวลาที่ C ใช้ = 15*0.25 = 3 ชั่วโมง 45 นาที