題意:用s1和s2串組合成斐波那契序列,然後讓你輸出fn的第k的字母之後的十個字母
題解:用遞歸實現,因爲直接求序列會時間複雜度會爆炸,所以每次可以轉移到之前的序列求,正好用遞歸來實現
注意只用到f57就可以,因爲k的上限有要求
f=[0]
s1="COFFEE"
s2="CHICKEN"
def init():
f.append(6)
f.append(7)
for i in range(3,57+1):
x=f[i-1]+f[i-2]
f.append(x)
def dfs(n,k):
global s1,s2
if(k>f[n]):
return
if(n==1):
print('%c'%s1[k-1],end='')
elif(n==2):
print('%c'%s2[k-1],end='')
else:
if(k>f[n-2]):
dfs(n-1,k-f[n-2])
else:
dfs(n-2,k)
t=int(input())
while(t):
t-=1
n,k=map(int,input().split())
init()
if(n>57):
for i in range(10):
dfs(57,k+i)
print('')
else:
for i in range(10):
dfs(n,k+i)
print('')