基本思路:
-
f[i] 表示 s[i]的字符串长度
即 f[i]=f[i-2]+f[i]
-
solve(n,k)
表示 s[n] 中 第 k 个 字符 -
当 n <= 2 时,直接返回答案
-
当 n > 2 时,
- k > f[i-2] 时 solve ( n-1 , k - f[n-2]);
说明要找的字符在前一天中,也就是不在前两天的数据范围之内,因此直接不考虑前两天 把要查找的数据范围变小 - k <= f[i-2] 时 solve ( n-2, k)
说明要查找的第K个字符在前两天的数据范围之内 要全局的搜索
- k > f[i-2] 时 solve ( n-1 , k - f[n-2]);
-
需特判 k > f[i]
当前要查询的 第 k 个字符 保证在 f[i] 的范围之中
-
初始值为6,7的斐波那契数列到56个就超过了1e12,
58,60,62……的 前1e12个字母 都是第56个的前1e12个字母,
59,61,63……的 前1e12个字母 都是第57个的前1e12个字母
对于小于等于57的 solve(n,k);
Code
`
`
标签:前两天,57,字母,56,1e12,2024,牛客,solve,集训 From: https://www.cnblogs.com/ltphy-/p/18173717