@
justfly 1秒钟之内循环1到49毫无压力。注意我前面说的,全选复制粘贴是不会变多的,至少粘贴两次才会多出来一次,所以结果会跟你的不一样。当n=11的时候,m=20。而不是n=10。
SELECT_ALL = 'CTRL+A'
COPY = 'CTRL+C'
PASTE = 'CTRL+V'
PRESS_GROUP = [SELECT_ALL, COPY, PASTE, PASTE, PASTE, PASTE]
A4 = ['A', 'A', 'A', 'A']
def f(n):
press_left = n
press_keys = []
total = 0
group_count = 0
if n <= 7:
return (n, ['A'] * n)
elif n == 8:
return (9, [['A', 'A', 'A'], [SELECT_ALL, COPY, PASTE, PASTE, PASTE]])
elif n == 9:
return (12, [['A', 'A', 'A', 'A'], [SELECT_ALL, COPY, PASTE, PASTE, PASTE]])
else:
press_a4(press_keys)
press_left = press_left - 4
group_count = press_group(press_left, press_keys)
press_left = press_left - 6 * group_count
allot_left(press_left, press_keys)
total = calculate_total(press_keys)
return (total, press_keys)
def press_a4(press_keys):
press_keys.append(A4)
def press_group(press_left, press_keys):
group_count = press_left / 6
for i in range(group_count):
press_keys.append(PRESS_GROUP)
return group_count
def allot_left(press_left, press_keys):
if len(press_keys) == 2:
a_count = press_left / 2
v_count = press_left - a_count
for i in range(a_count):
press_keys[0].append('A')
for i in range(v_count):
press_keys[1].append(PASTE)
else:
left = press_left
index = len(press_keys) - 1
while left > 0:
left = left - 1
press_keys[index].append(PASTE)
index = index - 1
if index == 0:
index = len(press_keys) - 1
def calculate_total(press_keys):
total = len(press_keys[0])
for l in press_keys[1:]:
total = total * (len(l) - 2)
return total
def main():
for i in range(1, 50):
print 'n=%d, m=%d' % (i, f(i)[0])
if __name__ == "__main__":
main()