1 条题解
-
0
自动搬运
来自洛谷,原作者为

owowow
最后在线时间:2025/8/4 7:32搬运于
2025-08-24 23:03:44,当前版本为作者最后更新于2024-09-11 13:19:24,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
P11042 类斐波那契循环数题解
题目大意
对于一个有 位的十进制数 ,可以生成一个类斐波那契数列 。
数列 的前 个数为 ,数列 的第 个数为 。
如果这个数 会出现在对应的类斐波那契数列 中,那么 就是一个类斐波那契循环数。 求小于 的最大的类斐波那契循环数是多少。
题目思路
直接暴力搜索 ,每一次用一个函数
pd(i)来判断 是否为类斐波那契循环数。接下来详细说说
pd(i)的写法。首先定义数组 ,。数组 的前 个数为对应下标的 。也就是说,。
对于后面的 ,。如果 ,那么 就是类斐波那契循环数。
判断代码:
def pd(x): s=str(x) n=len(s) a=[] for i in range(n): a.append(int(s[i])) b=a while 1==1: t=0 for i in range(len(b)-n,len(b)): t+=b[i] if t>10000000 : return 0 if t==x: return 1 b.append(t)正确代码
def pd(x): s=str(x) n=len(s) a=[] for i in range(n): a.append(int(s[i])) b=a while 1==1: t=0 for i in range(len(b)-n,len(b)): t+=b[i] if t>10000000 : return 0 if t==x: return 1 b.append(t) for i in range(10000000, 0, -1): if pd(i) == 1: print(i) break结果输出 ,那么答案就是 。
AC 代码
print(7913837)
- 1
信息
- ID
- 10683
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者