import sys
"""def get_set(n: int, i: int) -> list:
if i == 0:
return [True] * n
result = [False] * n
for j in range(n, i, i):
result[j] = True
return result
"""
def get_sets(n: int) -> list:
sets = [[] for _ in range(n)]
i = 1
while i <= n:
j = 0
while j < len(sets):
if i%(j+1) == 0:
sets[j].append(i)
j += 1
i += 1
return sets
def fetch_data(raw_data: str) -> list:
data = [[int(i) for i in d.split()] for d in raw_data.split("\n") if d]
return data
# n m q
# m wierszy operacji
# q wierszy pytań
def solve(raw_data: str) -> list:
data = fetch_data(raw_data)
n, m, q = data[0]
sets = get_sets(n)
operations = data[1:m+1]
for operation in operations:
if operation[0] == 1:
sets.append(add_sets(sets[operation[1]-1], sets[operation[2]-1]))
elif operation[0] == 2:
sets.append(intersect_sets(sets[operation[1]-1], sets[operation[2]-1]))
elif operation[0] == 3:
sets.append(neg_set(sets[operation[1]-1], n))
questions = data[m+1:]
for question in questions:
if question[1] in sets[question[0]-1]:
print("TAK")
continue
print("NIE")
def add_sets(set1: list, set2: list) -> list:
return list(set(set1 + set2))
def intersect_sets(set1: list, set2: list) -> list:
return list(set(set1) & set(set2))
def neg_set(_set: list, n: int) -> list:
return list(set(a for a in range(n)) - set(_set))
if __name__ == "__main__":
raw_data = sys.argv[1]
solve(raw_data)
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 | import sys """def get_set(n: int, i: int) -> list: if i == 0: return [True] * n result = [False] * n for j in range(n, i, i): result[j] = True return result """ def get_sets(n: int) -> list: sets = [[] for _ in range(n)] i = 1 while i <= n: j = 0 while j < len(sets): if i%(j+1) == 0: sets[j].append(i) j += 1 i += 1 return sets def fetch_data(raw_data: str) -> list: data = [[int(i) for i in d.split()] for d in raw_data.split("\n") if d] return data # n m q # m wierszy operacji # q wierszy pytań def solve(raw_data: str) -> list: data = fetch_data(raw_data) n, m, q = data[0] sets = get_sets(n) operations = data[1:m+1] for operation in operations: if operation[0] == 1: sets.append(add_sets(sets[operation[1]-1], sets[operation[2]-1])) elif operation[0] == 2: sets.append(intersect_sets(sets[operation[1]-1], sets[operation[2]-1])) elif operation[0] == 3: sets.append(neg_set(sets[operation[1]-1], n)) questions = data[m+1:] for question in questions: if question[1] in sets[question[0]-1]: print("TAK") continue print("NIE") def add_sets(set1: list, set2: list) -> list: return list(set(set1 + set2)) def intersect_sets(set1: list, set2: list) -> list: return list(set(set1) & set(set2)) def neg_set(_set: list, n: int) -> list: return list(set(a for a in range(n)) - set(_set)) if __name__ == "__main__": raw_data = sys.argv[1] solve(raw_data) |
English