前言
在著名的颂歌《圣诞节的十二天》中,叙述者每天都会收到几份礼物。这首歌是累积性的 -在每节经文中,都会添加新的礼物,其数量要比之前的礼物多一个。一只Part,两只海龟鸽子,三只法国母鸡,等等。
在任何给定的诗句N处,我们都可以通过找到第N个四面体数来计算歌曲中当前礼物的累积总和,从而得出结果:
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 part),3 *(2斑鸠),2 *(3只法国母鸡)和1 *(4只叫鸟)。通过总结这些,我们得到4(1) + 3(2) + 2(3) + 1(4) = 20
。
挑战
您的任务是编写一个程序或函数,给定一个表示存在数364≥p≥1的礼物的正整数,确定它是圣诞节的哪一天(圣诞节)。
例如,如果p = 286,我们就在圣诞节的第11天。但是,如果p = 287,则礼物的下一个负载已经开始,这意味着它是第12天。
从数学上讲,这是查找下一个四面体数,并返回其在整个四面体数序列中的位置。
规则:
- 这是代码高尔夫球,因此最短的解决方案(以字节为单位)获胜。
- 适用标准高尔夫漏洞。
- 说到几天,您的程序必须为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这样的语言将其缩短。