搜狗笔试-神奇的数列求ac代码

搜狗笔试-神奇的数列求ac代码,暴力行不通呀用python#搜狗##笔试题目#
全部评论
# 搜狗第一题 神奇的数列 x = int(input()) dict1 = {} for m in range(1,100):     dict1[m] = 0 for f1 in range(1, 100):     for f2 in range(1, 100):         s = 0         i = 2 #下标         a = f1         b = f2         while s <= x:             s = a + b             i += 1             if s == x:                 if dict1[i] == 0:                     temp = 0                 dict1[i] += 1                 break             a = b             b = s for m,n in sorted(dict1.items()):     if n !=0:         print(m,n)
点赞 回复 分享
发布于 2019-09-08 18:32
马上还有一场,去吃饭了代码可能来不及发了。大概思想是,如果给的数是x,假设前一个数为y,那么倒数第三个数是x-y,倒数第四个数是2y-x,然后保证每个数>0,可以得到m的区间。3个数m介于1到x之间,4个数的话m介于1/2x到x之间,5个数的话m介于1/2x到2/3x之间,注意都是开区间。会发现那个分数的分子分母是斐波拉契数列,然后更新就好了。如果m取不到了,就停止循环
点赞 回复 分享
发布于 2019-09-08 18:24
不知道这个行不行。。最后时刻断网了 我擦 法第一题 from collections import Counter num_input=int(input()) A0=[] A1=[] time=[] for i in range(1,num_input):     for j in range(1,num_input):         if i+j<=num_input:             A0.append(i)             A1.append(j) for len_l in range(len(A0)):     if num_input/(A0[len_l]+A1[len_l])>int(num_input/(A0[len_l]+A1[len_l])):         time.append(int(num_input/(A0[len_l]+A1[len_l]))+3)     else:         time.append(int(num_input/(A0[len_l]+A1[len_l]))+2)  counter_time=dict(Counter(time)) for i,j in counter_time.items():     print(i,j)
点赞 回复 分享
发布于 2019-09-08 18:14
不过我也就会这一题……真的是劝退型笔试
点赞 回复 分享
发布于 2019-09-08 18:09
可以的,等我过会发
点赞 回复 分享
发布于 2019-09-08 18:08

相关推荐

不愿透露姓名的神秘牛友
06-27 14:11
很喜欢小米的新车,校招薪资每月22k,攒多久能买?
测试糕手手:别看工资,先看现金流存款。有50W存款以上再考虑,车是消耗品,选适合自己的重要。你有钱就当我没说过
点赞 评论 收藏
分享
05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
评论
1
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务