Problem: [MoeCTF 2021]ez_Algorithm
思路
发现这个fuck是一个递归函数,直接跑程序的化会因为传入的值太大需要很多的时间,所以观察递归函数.


发现,递归函数实际上可以转化成一个公式,fuck(n)=fuck(n-1)+2*fuck(n-2),所以可以先把需要用到的fuck值提前计算好在后面直接可以使用
,缩短了程序的运行时间.
EXP
a=[0,1]
for i in range(2,7676):
a.append(a[i-1]+2a[i-2])
v=[109, 110, 96, 200, 21793, 11184845, 1431655726, 2863311519, 1431655731, 2863311516, 1431655782, 2863311577, 1431655690, 2863311562, 1431655780, 2863311514, 1431655690, 2863311516, 1431655741, 2863311514, 1431655718, 2863311604, 1431655778, 2863311514, 1431655736, 2863311512, 1431655723, 2863311599, 1431655781, 2863311604, 1431655724, 2863311515, 1431655712, 2863311604, 1431655719, 2863311512, 1431655732, 2863311514, 1431655780, 2863311569, 1431655782, 2863311604, 1431655778, 2863311555, 1431655782, 2863311604, 1431655736, 2863311512, 1431655732, 2863311557, 1431655780, 2863311557, 1431655730, 2863311604, 1431655781, 2863311565, 1431655690, 2863311615, 1431655780, 2863311558, 1431655782, 2863311604, 1431655734, 2863311515, 1431655736, 2863311579, 1431655780, 2863311512, 1431655725, 2863311514, 1431655778, 2863311570, 1431655786, 2863311508, 1431655786, 2863311574]
for i in range(len(v)):
print(chr((v[i]^a[i*i])%256),end='')
总结
- 对该题的考点总结
