非题解 仅仅是自己的个人思路!!!
希望能为你提供一些思路,目前不确定正确与否,大家有更好好的思路也可以一起讨论~~~
目录
A:斐波那契与7
解题思路:
- 当前项个位 只与前两项的个位有关 (十位百位... 相加 影响不到个位)
- 那么当相邻两项的个位在之前出现过时 即又会反复1 1 2 3 5... 即会周期循环下去
思考:要想后面项的个位又重复出现3 5 那么前面两项 必然是1 2 而1 2 两项前面又必然是 0 1
所以可以发现 0 1 1 2 3 5 是绑定死的 所以可以判断下一次出现1 1 即为下一次周期的开始
#ans:26960268160
#暴力:返回1-n项之间的数列7的个数
def fun1(n):
res = 0
a,b = 1,1
for i in range(3,n + 1):
if (a + b) % 10 == 7:res += 1
a,b = b,(a + b) % 10
return res
#利用周期性:返回1-n项之间的数列7的个数
def fun2(n):
res = 0
res = (n // 60) * 8 + fun1(n % 60)
return res
if __name__ == "__main__":
n = int(input().strip())
print("fun2",fun2(n))
## 以下是我找周期和计算该周期里7的个数的过程
## Set,a,b,t = ['1 1'],1,1,0
## while True:
## s = str(b % 10) + ' ' + str((a + b) % 10)
## if s in Set:break
## else:Set.append(s)
## a,b = b,a + b
## if b % 10 == 7:t += 1
## print(t,len(Set))
## print(fun1(n % 61))
B:小蓝做实验
解题思路:利用输入流 暴力判断即可 大概3分钟之内
#ans:342693
import fileinput
def check(x):
i = 2
while i * i <= x:
if x % i == 0:return False
i += 1
return True
if __name__ == "__main__":
f = fileinput.input(files="C:/Users/Aoung/Desktop/LQ2022SF_PC/primes.txt")
cnt = 0
while True:
try:
if check(int(f.readline().strip())):cnt += 1
except:
break
print(cnt)
C:取模
解题思路:暴力~~~ 蒟蒻代码就不贴了
D:内存空间
解题思路:模拟 &nb

这篇博客探讨了若干算法问题的解题思路,包括斐波那契数列中7的出现次数、最大公约数的计算以及模拟交通信号的 bfs 解决方案。博主通过暴力和周期性分析解决了斐波那契问题,并讨论了如何判断数组是否存在解转化为1的变换。此外,还涉及到了最大公约数的快速计算以及交通信号灯状态变化的路径查找。
最低0.47元/天 解锁文章
1659

被折叠的 条评论
为什么被折叠?



