Skip to content

Commit e64614b

Browse files
committed
master
1 parent 2e50c38 commit e64614b

File tree

1 file changed

+101
-0
lines changed

1 file changed

+101
-0
lines changed

网易4月19面试.py

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
#分数p/q的循环节前面部分的长度、以及循环节的长度
2+
#给定大小为n的序列a,每次操作可选序列中的一个数x,把x变成大于x的最小指数或把x变成小于x的最大质数,问数全都一样最少要几次操作
3+
#最远递增祖先
4+
#长度为n的数组a,每次计算平均数,进行多次操作把严格大于avg的元素从数组中删除,若无可删除的数,即停止,问最多可以进行多少次这样的操作
5+
6+
#1.
7+
a = int(input())
8+
nums = list(map(int,input().split()))
9+
#二分的思路
10+
avg = 0
11+
cnt = 0
12+
while len(nums)>2:
13+
nums.sort()
14+
avg = 0
15+
for i in range(len(nums)):
16+
avg += nums[i]
17+
avg /= len(nums)
18+
#print(avg)
19+
if avg==nums[len(nums)-1]:
20+
break
21+
l = 0
22+
r = len(nums)
23+
while l<r:
24+
mid = (l+r)//2
25+
if nums[mid]>=avg:
26+
r = mid
27+
else:
28+
l = mid+1
29+
nums = nums[0:r]
30+
#print(nums)
31+
#print(len(nums))
32+
#break
33+
cnt += 1
34+
if avg==nums[len(nums)-1]:
35+
cnt += 1
36+
print(cnt)
37+
38+
#3
39+
#先找到1w以内的质数
40+
def shai(n):
41+
pick = [1]*(n+1)
42+
pick[0] = pick[1] = 0
43+
for i in range(n+1):
44+
if pick[i]!=0:
45+
for j in range(i*i,n+1,i):
46+
pick[j] = 0
47+
return [x for x in range(n+1) if pick[x]]
48+
zhishu = shai(100)
49+
zhishu.insert(0,1)
50+
a = int(input())
51+
nums = list(map(int,input().split()))
52+
#把输入的全部映射在质数数组中
53+
def erfen(nums,target):
54+
if len(nums)==0:
55+
return -1
56+
l = 0
57+
r = len(nums)
58+
while l<r:
59+
mid = (l+r)//2
60+
if nums[mid]==target:
61+
r = mid
62+
elif nums[mid]>target:
63+
r = mid
64+
elif nums[mid]<target:
65+
l = mid + 1
66+
return l
67+
cixu = {}
68+
s = set()
69+
for num in nums:
70+
cixu[num] = erfen(zhishu, num)
71+
if num in zhishu:
72+
s.add(num)
73+
less = 9999
74+
#print(s)
75+
if s:
76+
for ns in s:
77+
res = 0
78+
for key,value in cixu.items():
79+
res += abs(cixu[ns]-value)
80+
less = min(less,res)
81+
else:
82+
for num in nums:
83+
res = 0
84+
for key,value in cixu.items():
85+
res += abs(cixu[num]-value)
86+
less = min(less,res)
87+
print(less)
88+
89+
#4.
90+
#1 6 1 1
91+
#6 7 0 6
92+
num = list(map(int,input().split()))
93+
ss = str(num[0]/num[1])
94+
if len(ss)<15:
95+
print(-1)
96+
else:
97+
s_list = ss.split('.')
98+
tmp = s_list[1]
99+
for i in range(len(tmp)-1): #只看小数点后的部分
100+
if tmp[i]!=tmp[i+1]:
101+
print('1 1')

0 commit comments

Comments
 (0)