python
2026-05-16 21:45:09
发布于:江苏
0阅读
0回复
0点赞
import sys
def solve() -> None:
data = sys.stdin.read().strip()
if not data:
return
n = int(data)
# 初始两个字符串
F0 = "123" # 长度3
F1 = "1234567" # 长度7
# 预计算长度序列,直到长度不小于 n
lens = [3, 7]
while lens[-1] < n:
lens.append(lens[-1] + lens[-2])
# 递归查找第 n 个字符
def find(k: int, pos: int) -> str:
if k == 0:
return F0[pos - 1] # pos 从1开始
if k == 1:
return F1[pos - 1]
# k >= 2
if pos <= lens[k-1]:
return find(k-1, pos)
else:
return find(k-2, pos - lens[k-1])
# 最大的k使得 lens[k] >= n
k = len(lens) - 1
result = find(k, n)
print(result)
if __name__ == "__main__":
solve()
这里空空如也

有帮助,赞一个