Все ответы сошлись, а числотрон доказывается (для последних 4 задач), что в принципе другие ответы НЕ возможны, т.к. фактически тестирование проходит на абсолютно все разницы и ответ может выйти с сотней замен (при особых обстоятельствах)
Для первых двух задач:
#Начал разработку: 9:26
#Время получения ответа: 9:32 (с первой попытки ;S)
#Время модификации до мульти: 9:36 (с первой попытки ;S)
def Z2660():
def Brain(Name, IsMax):
with open(Name) as file:
N = int(file.readline())
Data = [tuple(map(int, file.readline().split())) for i in range(N)]
Sum = 0
Min = None
for A, B in Data:
A, B = sorted((A, B))
if IsMax: Sum += B
else: Sum += A
Razn = B - A
if Razn % 3 != 0:
if Min == None or Min >= Razn: Min = Razn
if Sum % 3 == 0:
if IsMax: Sum -= Min
else: Sum += Min
return Sum
print("Ответ Z2660:", Brain("27-a.txt", True), Brain("27-b.txt", True))
print("Ответ Z2661:", Brain("27-1a.txt", False), Brain("27-1b.txt", False))
Для остальных четырёх:
def Chislotron(Arr, Sum): #Пользуйтесь на здоровье! Фактически он быстрее будет работать с файлами типа "b", т.к. там в основном куча разниц 1 и 2
def Recurs(Arr, Find):
S = set(Arr)
for Ch in sorted(S):
if Ch < Find:
A = Arr.copy()
A.remove(Ch)
Recurs(A, Find - Ch)
elif Ch == Find: raise KeyError
else: break
if Sum == 0: return True
try: Recurs(Arr, Sum)
except KeyError: return True
return False
#Начал разработку: 9:48
#Время получения ответов (сразу мульти): 9:59 (Фигня с ответами)
#Исправлял до новой технологии: 10:19 - 10:24 (Теперь все ответы верные!)
def Z2662():
def Brain(Name, IsMax, Div):
with open(Name) as file:
N = int(file.readline())
Data = [tuple(map(int, file.readline().split())) for i in range(N)]
Sum = 0
Arr = []
for A, B in Data:
A, B = sorted((A, B))
if IsMax: Sum += B
else: Sum += A
Razn = B - A
Arr.append(Razn)
#print(Sum, Sum % Div)
if Sum % Div != 0:
V = 0
while True:
if IsMax: Ch = Sum - V
else: Ch = Sum + V
if Ch % Div == 0:
if Chislotron(Arr, V): break
V += 1
Sum = Ch
#print(" ", Sum, Sum % Div)
return Sum
print("Ответ Z2662:", Brain("27-2a.txt", True, 3), Brain("27-2b.txt", True, 3))
print("Ответ Z2663:", Brain("27-3a.txt", False, 3), Brain("27-3b.txt", False, 3)) #Обычный метод в первом числе дал бы 66480, что не верно :/
print("Ответ Z2664:", Brain("27-4a.txt", True, 5), Brain("27-4b.txt", True, 5)) #Обычный метод в первом числе дал бы 123430, что не верно :/
print("Ответ Z2665:", Brain("27-5a.txt", False, 5), Brain("27-5b.txt", False, 5))
Z2662()