给定正整数N,您的任务是返回以下算法达到N所需的步数:
找到最小的三角形的数目Ť 我使得Ť 我 ≥Ñ。建立相应的列表L = [1,2,...,i]。
当L的项之和大于N时,从列表中删除第一个项。
如果L项的总和现在小于N,则增加i并将其附加到列表中。继续执行步骤2。
一旦达到N,我们就会停止。系统只会执行第一步。步骤#2和#3可能根本不处理。
例子
以下是N = 11的示例:
所以预期输出用于N = 11是4。
其他例子:
- N = 5-我们从 T 3 = 1 + 2 + 3 = 6开始,然后是 2 + 3 = 5。预期输出: 2。
- N = 10-因为 10是一个三角数,所以只需要第一步: T 4 = 1 + 2 + 3 + 4 = 10。预期输出: 1。
前100个值
下面是结果1≤N≤100:
1, 2, 1, 4, 2, 1, 2, 10, 2, 1, 4, 2, 6, 2, 1, 22, 8, 2, 10, 2,
1, 2, 12, 6, 2, 4, 2, 1, 16, 2, 18, 50, 2, 6, 2, 1, 22, 6, 2, 4,
26, 2, 28, 2, 1, 8, 30, 16, 2, 6, 4, 2, 36, 2, 1, 2, 4, 12, 40, 2,
42, 14, 2,108, 2, 1, 46, 2, 6, 4, 50, 2, 52, 18, 2, 4, 2, 1, 56, 12,
2, 20, 60, 4, 2, 22, 10, 2, 66, 2, 1, 4, 10, 24, 2, 40, 72, 8, 2, 6
规则
- 您可以编写完整的程序或函数,以打印或返回结果。
- 您需要在不到一分钟的时间内用中档硬件处理所有N≤65536。
- 如果有足够的时间,则您的程序/函数理论上应该可以在语言所固有支持的N的任何值下工作。如果不是,请在您的答案中说明原因。
- 这是代码高尔夫球,所以最短答案以字节为单位!