File tree Expand file tree Collapse file tree 1 file changed +101
-0
lines changed Expand file tree Collapse file tree 1 file changed +101
-0
lines changed Original file line number Diff line number Diff line change 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' )
You can’t perform that action at this time.
0 commit comments