通过使用marcog的解决方案,我发现了一个以开头的模式n=16
。为了说明这一点,这里提供了n=24
高达的击键,n=29
为了提高可读性,我将^ A替换为S(选择),将^ C替换为C(复制),将^ V替换为P(粘贴),以提高可读性:
24: A,A,A,A,S,C,P,P,P,S,C,P,P,P,S,C,P,P,P,S,C,P,P,P
4 * 4 * 4 * 4 * 4 = 1024
25: A,A,A,A,S,C,P,P,P,S,C,P,P,S,C,P,P,S,C,P,P,S,C,P,P
4 * 4 * 3 * 3 * 3 * 3 = 1296
26: A,A,A,A,S,C,P,P,P,S,C,P,P,P,S,C,P,P,S,C,P,P,S,C,P,P
4 * 4 * 4 * 3 * 3 * 3 = 1728
27: A,A,A,A,S,C,P,P,P,S,C,P,P,P,S,C,P,P,P,S,C,P,P,S,C,P,P
4 * 4 * 4 * 4 * 3 * 3 = 2304
28: A,A,A,A,S,C,P,P,P,S,C,P,P,P,S,C,P,P,P,S,C,P,P,P,S,C,P,P
4 * 4 * 4 * 4 * 4 * 3 = 3072
29: A,A,A,A,S,C,P,P,P,S,C,P,P,P,S,C,P,P,P,S,C,P,P,P,S,C,P,P,P
4 * 4 * 4 * 4 * 4 * 4 = 4096
在初始4 As之后,理想的模式是选择,复制,粘贴,粘贴,粘贴和重复。每5次击键会将As的数量乘以4。如果这5个击键模式无法自己消耗其余的击键,则一定数量的4个击键模式(SCPP)消耗了最终的击键,并根据需要更换SCPPP(或除去其中的一种焊膏)。每4次击键,这4种击键模式会将总数乘以3。
这里使用这种模式的是一些Python代码,其结果与marcog的解决方案相同,但是是O(1)编辑:由于取幂,实际上是O(log n),这要感谢IVlad指出。
def max_chars(n):
if n <= 15:
return (0, 1, 2, 3, 4, 5, 6, 9, 12, 16, 20, 27, 36, 48, 64, 81)[n]
e3 = (4 - n) % 5
e4 = n // 5 - e3
return 4 * (4 ** e4) * (3 ** e3)
计算e3:
击键列表的末尾总是有0到4个SCPP模式,因为n % 5 == 4
有4个,n % 5 == 1
有3个,n % 5 == 2
有2个,n % 5 == 3
有1个,n % 5 == 4
有0个(4 - n) % 5
。可以简化为。
计算e4:
每当总数增加到1时n % 5 == 0
,模式总数就会增加1 n / 5
。使用地板分割,我们可以获得模式的总数,的总数e4
是模式的总数减去e3
。对于不熟悉Python的人来说,//
是面向未来划分地板的标记。
^A
中,通常是“全选”,^C
“复制”,^V
“粘贴”。那给你个主意吗?