การตั้งค่า
สมมติว่าคุณได้รับฟิวส์nด้วย 1 ≤ n ≤ 5 ซึ่งแต่ละอันมีความยาวเมตรและที่ฟิวส์แต่ละอันมีอัตราการเผาไหม้ที่เกี่ยวข้องNเมตรต่อDชั่วโมง
ฟิวส์สามารถติดไฟที่ปลายด้านหนึ่งหรือทั้งสองด้านจากนั้นดับที่ปลายด้านหนึ่งหรือทั้งสองข้าง relit, re-extinguished และอื่น ๆ หลาย ๆ ครั้งตามต้องการจนกว่าฟิวส์จะถูกใช้จนหมด คุณสามารถจุดไฟและดับฟิวส์ได้ทันทีและคุณสามารถสังเกตได้ทันทีว่าฟิวส์ถูกใช้หมดแล้ว (ไหม้)
ฟิวส์ไม่สามารถตัดและไม่สามารถติดที่ใดก็ได้ยกเว้นที่ปลาย
การตั้งค่าดังกล่าวช่วยให้ระบบจับเวลามีความแม่นยำอย่างไม่สิ้นสุดโดยการวัดเวลาระหว่างเหตุการณ์ไฟ / การใช้ฟิวส์สองครั้ง ตัวอย่างเช่นเมื่อได้รับฟิวส์สองครั้งที่มีอัตราการเผาไหม้ 1 เมตรต่อชั่วโมงคุณสามารถวัดได้ 45 นาที (3/4 ชั่วโมง)
- พร้อมกัน: ส่องฟิวส์แรกที่ปลายทั้งสองข้างส่องไฟฟิวส์ที่สองที่ปลายด้านหนึ่งและทำเครื่องหมายจุดเริ่มต้นของช่วงเวลาของคุณ
- จุดไฟที่สองของฟิวส์ที่สองในทันทีที่ฟิวส์แรกถูกใช้ (30 นาทีต่อมา)
- ทำเครื่องหมายจุดสิ้นสุดของช่วงเวลาของคุณในทันทีที่มีการใช้ฟิวส์ตัวที่สอง (15 นาทีต่อมา)
ความท้าทาย
กำหนดจำนวนเศษส่วนของเวลาtและชุดของเศษส่วนnแทนอัตราการเผาไหม้ที่แน่นอนของฟิวส์nเขียนโปรแกรมหรือฟังก์ชันที่เอาต์พุต / ส่งกลับค่าความจริงถ้าtชั่วโมงสามารถวัดได้อย่างแม่นยำผ่านการเผาระบบของฟิวส์หรือ ค่าที่ผิดพลาดเป็นอย่างอื่น
อินพุตไปยังโปรแกรมสามารถเป็นดังต่อไปนี้:
- อาร์กิวเมนต์บรรทัดคำสั่งของฟอร์ม
TN/TD N1/D1 N2/D2 N3/D3 ...
- สตริงของแบบฟอร์ม
TN/TD N1/D1 N2/D2 N3/D3 ...
อ่านจากstdin
หรือเทียบเท่า - สตริงของฟอร์มที่
TN/TD N1/D1 N2/D2 N3/D3 ...
ส่งผ่านเป็นอาร์กิวเมนต์ของฟังก์ชัน - อาร์เรย์ของสตริงที่
["TN/TD", "N1/D1", "N2/D2", "N3/D3", ...]
ส่งผ่านเป็นอาร์กิวเมนต์ของฟังก์ชัน
ในทุกกรณีT = TN
/ TD
ที่TN
, TD
∈ [1,10000]
ในทำนองเดียวกันในทุกกรณี: เผาอัตราฟิวส์ฉัน = N ฉัน / D ฉัน = N<i>
/ D<i>
ที่N<i>
, D<i>
∈ [1,10] ∀ ฉัน
คุณอาจคิดว่าจะมีฟิวส์อยู่ระหว่าง 1 ถึง 5 ฟิวส์ (รวมอยู่ด้วย) และอินพุตทั้งหมดนั้นใช้ได้และอยู่ในช่วง คุณอาจสมมติว่าเศษส่วนที่ป้อนเข้าทั้งหมดจะได้รับในเงื่อนไขต่ำสุด
คุณไม่สามารถใช้ตัวเลขทศนิยมที่มีส่วนประกอบที่เป็นเศษส่วนสำหรับความท้าทายนี้ นั่นคือถ้าคุณใช้ตัวเลขจุดลอยตัวที่ใดก็ได้ในแอปพลิเคชันของคุณพวกเขาอาจใช้ค่าที่เป็นส่วนประกอบที่มีส่วนประกอบเป็นศูนย์
เกณฑ์การให้คะแนน
นี่คือความท้าทายของรหัส - กอล์ฟดังนั้นการส่งตามที่สั้นที่สุดเป็นไบต์จะได้รับรางวัลชนะ
ตัวอย่างอินพุต / เอาท์พุต
input: 29/6 3/2 2/3 3/5 3/7 7/5
output: true
One solution:
- light both ends of fuse 1, mark start of interval
- on fuse 1 consumption: light both ends of fuse 2, light one end of fuse 5
- on fuse 5 consumption: extinguish one end of fuse 2, light both ends of fuse 3,
light both ends of fuse 4
- on fuse 2 consumption: extinguish one end of fuse 3, extinguish both ends of
fuse 4
- on fuse 3 consumption: relight one end of fuse 4
- on consumption of fuse 4: mark end of interval (29/6 hours)
input: 2/1 3/1 5/1 7/1
output: false
input: 5/1 6/1 1/6 9/1 1/9
output: true
One solution:
- light fuse 1 at one end, light fuse 2 at both ends, light fuse 4 at both ends
- on fuse 1 consumption: extinguish one end of fuse 2, mark start of interval
- on fuse 4 consumption: relight one end of fuse 2
- on fuse 2 consumption: mark end of interval (5 hours)
มีความสุข! :)