คำนำ
ในเพลงคริสต์มาสที่รู้จักกันดีสิบสองวันคริสต์มาสผู้บรรยายนำเสนอด้วยของขวัญมากมายในแต่ละวัน เพลงจะถูกสะสม - ในแต่ละบทกวีมีการเพิ่มของขวัญใหม่โดยมีปริมาณหนึ่งสูงกว่าของขวัญก่อนหน้า หนึ่งนกกระทาสองเต่านกพิราบสามแม่ไก่ฝรั่งเศสและอื่น ๆ
ที่ข้อใดก็ตามNเราสามารถคำนวณผลรวมสะสมของของขวัญเพื่อให้ห่างไกลในเพลงโดยการหาN TH จำนวน tetrahedralซึ่งจะช่วยให้ผล:
Verse 1: 1
Verse 2: 4
Verse 3: 10
Verse 4: 20
Verse 5: 35
Verse 6: 56
Verse 7: 84
Verse 8: 120
Verse 9: 165
Verse 10: 220
Verse 11: 286
Verse 12: 364
ตัวอย่างเช่นหลังจากที่ข้อ 4 เราได้มี4 * (1 นกกระทา) , 3 * (2 เต่านกพิราบ) , 2 * (3 ไก่ฝรั่งเศส)และ1 * (4 นกโทร) 4(1) + 3(2) + 2(3) + 1(4) = 20
จากข้อสรุปเหล่านี้ที่เราได้รับ
ความท้าทาย
งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ให้จำนวนเต็มบวกแทนจำนวนของขวัญ364 ≥ p ≥ 1กำหนดวัน (ข้อ) ของคริสมาสต์
ตัวอย่างเช่นถ้าp = 286เราอยู่ในวันที่ 11 ของวันคริสต์มาส อย่างไรก็ตามหากp = 287 แสดงว่ามีการโหลดของขวัญชิ้นถัดไปหมายความว่าเป็นวันที่ 12
ในทางคณิตศาสตร์นี่คือการค้นหาหมายเลข tetrahedral ถัดไปและกลับตำแหน่งในลำดับตัวเลข tetrahedral ทั้งหมด
กฎ:
- นี่คือรหัสกอล์ฟดังนั้นการแก้ปัญหาที่สั้นที่สุด (เป็นไบต์) ชนะ
- มีช่องโหว่มาตรฐานสำหรับการเล่นกอล์ฟ
- เมื่อพูดถึงหลายวันโปรแกรมของคุณจะต้องได้รับการจัดทำดัชนี 1 รายการ
- การส่งของคุณจะต้องเป็นโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบ แต่ไม่ใช่ตัวอย่าง
กรณีทดสอบ
1 -> 1
5 -> 3
75 -> 7
100 -> 8
220 -> 10
221 -> 11
364 -> 12
x=>{while(x>p)p+=r+=++i;return i}
ฉันแน่ใจว่าสามารถทำให้สั้นลงในภาษาเช่น JavaScript