-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnumbersGrouping.py
63 lines (43 loc) · 1.46 KB
/
numbersGrouping.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
"""
Task
You are given an array of integers that you want distribute between several groups. The first group should contain
numbers from 1 to 104, the second should contain those from 104 + 1 to 2 x 104, ..., the 100th one should contain
numbers from 99 x 104 + 1 to 106 and so on.
All the numbers will then be written down in groups to the text file in such a way that:
the groups go one after another;
each non-empty group has a header which occupies one line;
each number in a group occupies one line.
Calculate how many lines the resulting text file will have.
Example
For a = [20000, 239, 10001, 999999, 10000, 20566, 29999],
the output should be 11.
The numbers can be divided into 4 groups:
239 and 10000 go to the 1st group (1 ... 104);
10001 and 20000 go to the second 2nd (104 + 1 ... 2 x 104);
20566 and 29999 go to the 3rd group (2 x 104 + 1 ... 3 x 104);
groups from 4 to 99 are empty;
999999 goes to the 100th group (99 * 104 + 1 ... 106).
Thus, there will be 4 groups (i.e. four headers) and 7 numbers,
so the file will occupy 4 + 7 = 11 lines.
The file like this:
1-10000:
239
10000
10001-20000:
10001
20000
20001-30000:
20566
29999
990001-1000000:
999999
Input/Output
[input] integer array a
Constraints: 1 ≤ a.length ≤ 104, 1 ≤ a[i] ≤ 106.
[output] an integer
The number of lines needed to store the grouped numbers.
"""
import math
def numbers_grouping(a):
return len(a) + len(set([math.ceil(i/10000) for i in a]))
print(numbers_grouping([10000,1]))