Advertisement
denvolf2000

Задача про заряды

May 20th, 2018
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.83 KB | None | 0 0
  1. """
  2. В лаборатории для большого количества частиц производятся замеры электрического заряда каждой из них. Заряд частицы измеряется как целое число (положительное, отрицательное или  0 ). Частиц, заряд которых измерен, может быть очень много, но не может быть меньше трех. Заряды всех частиц различны.
  3.  
  4. В серии обязательно присутствует хотя бы одна частица с отрицательным зарядом.
  5.  
  6. При обработке результатов в каждой серии эксперимента отбирается основное множество значений зарядов. Это такое непустое подмножество значений зарядов, для которого произведение значений зарядов является минимальным среди всех возможных подмножеств. При нахождении произведения знак числа учитывается. Если есть несколько таких множеств, то берется то, которое содержит наибольшее количество элементов.
  7.  
  8. Требуется написать программу, которая будет обрабатывать результаты эксперимента, находя основное множество.
  9.  
  10. На вход программе в первой строке подается количество частиц  N . В каждой из последующих  N  строк записано одно целое число, по абсолютной величине не превышающее  109 . Все  N  чисел различны.
  11.  
  12. Программа должна вывести в порядке возрастания номера частиц, заряды которых принадлежат основному множеству данной серии. Нумерация частиц ведется с единицы.
  13. """
  14. n = int(input())
  15. B = []
  16. prod = 1
  17. flag = True
  18. ind_max_otr = 0
  19.  
  20. for i in range(n):
  21.     a = int(input())
  22.     if flag and a < 0:
  23.         max_otr = a
  24.         ind_max_otr = i + 1
  25.         flag = False
  26.         B.append(i+1)
  27.         prod *= a
  28.     elif a == 0:
  29.         continue
  30.     elif a > 0:
  31.         B.append(i+1)
  32.         prod *= a
  33.     elif a <= max_otr:
  34.         B.append(i+1)
  35.         prod *= a
  36.     elif a > max_otr and a < 0:
  37.         max_otr = a
  38.         ind_max_otr = i + 1
  39.         B.append(i+1)
  40.         prod *= a
  41.  
  42. if prod > 0:
  43.     B.pop(B.index(ind_max_otr))
  44. print(*B)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement