Решаю я такой задачку, а тут больше нужного получается, т.к. тестер на сумму (Chislotron) никогда не ошибается XD
Прога:
#Начал разработку: 21:46
#Время получения ответа: 22:00 (ответы на сайте не верные)
def Chislotron(Arr, Sum):
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
def Z3825():
def Brain(Name):
with open(Name) as file:
N = int(file.readline())
Data = [int(file.readline()) for i in range(N)]
Sum = sum(Data)
V = Sum % 50
print(sorted(Data))
while True:
print("Тест:", V)
if Chislotron(Data, V): break
V += 50
#print(Sum - V)
return Sum - V
#Brain("27-61a.txt")
print("Ответ Z3825:", Brain("27-61a.txt"), Brain("27-61b.txt"))
print(sum([2, 4, 16, 24, 26, 31, 36, 41, 46, 58, 61, 62, 66, 70, 80, 88, 92, 97])) #Изъял 22 и 25 и тут рили 900
Z3825()
В итоге выходит, что на деле не 850 5036250 должно быть, а 900 5036300 XD
Вывод проги:
[2, 4, 16, 22, 24, 25, 26, 31, 36, 41, 46, 58, 61, 62, 66, 70, 80, 88, 92, 97]
Тест: 47
[много-много сортированных чисел]
Тест: 16
Тест: 66
Тест: 116
Ответ Z3825: 900 5036300
900
Ответ проги приходит мгновенно, т.к. чем меньше сумма на тесте, тем быстрее Chislotron найдёт или не найдёт комбинацию на сумму
Пользуйтесь моим числотроном на здоровье ;'-} , т.к. почти половина задач 27 им решается :S
P.S. 22 и 25 взял с неба, лижбы вышло 47 в сумме, но можно и 16 с 31 взять. Числотрон создан для тестирования суммы, а не нахождения массива чисел, что даст эту сумму (в целях скорости, т.к. в таких задачах нигде не нужны такие числа), так что воть;'-}