ekaterinaparamonova

Задача 27

Feb 25th, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.17 KB | None | 0 0
  1. # Задание 27
  2. 1) 2 задачи (2 балла, 4 балла)
  3. 2 балла - сохранить весь вход в один большой
  4. массив и перебрать (много вложенных циклов)
  5. 4 балла
  6. - нельзя хранить всё в массиве
  7. (! но сами массивы не запрещены, главное, чтобы
  8. их длина не зависела от входа)
  9. - 1 Кб = 256 int (10 переменных + int[200])
  10. - O(N)
  11. Нельзя:
  12. for i in range(N):
  13.     for j in range(N):
  14.    
  15. for i in range(N):
  16.     for j in range(i+1, N):
  17.    
  18.    
  19. a = list(map(int, input().split())
  20. a = [int(x) for x in input().split()]
  21.  
  22. перебор
  23. N = int(input())
  24. a = []
  25. for i in range(N):
  26.     a.append(int(input()))
  27. # объявить константы
  28. for i in range(N):
  29.     for j in range(i + 1, N):
  30.         a[i] a[j]
  31.  
  32.        
  33. # минимальная чётная сумма
  34. N = int(input())
  35. m1 = 30001 # неч
  36. m0 = 30001 # чет
  37. min_s = 60001
  38. for i in range(N):
  39.     x = int(input())
  40.     if x % 2 == 0:
  41.         if (x + m0) < min_s:
  42.             min_s = x + m0
  43.         if x < m0:
  44.             m0 = x
  45.     else:
  46.         if (x + m1) < min_s:
  47.             min_s = x + m1
  48.         if x < m1:
  49.             m1 = x
  50. print(min_s)   
  51.        
  52.        
  53. # минимальное чётное произведение
  54. N = int(input())
  55. m0 = 30001 # чет
  56. min_prod = 60001
  57.  
  58. for i in range(N):
  59.     x = int(input())
  60.     if (x * m0) < min_prod:
  61.         min_prod = x * m0
  62.     if x % 2 == 0 and x < m0:
  63.         m0 = x
  64.    
  65. print(min_prod)
  66.  
  67.  
  68. # минимальная сумма кратная 3
  69. N = int(input())
  70. m2 = 30001
  71. m1 = 30001
  72. m0 = 30001
  73. min_s = 60001
  74. for i in range(N):
  75.     x = int(input())
  76.     if x % 3 == 0:
  77.         if (x + m0) < min_s:
  78.             min_s = x + m0
  79.         if x < m0:
  80.             m0 = x
  81.     elif x % 3 == 1:
  82.         if (x + m2) < min_s:
  83.             min_s = x + m2
  84.         if x < m1:
  85.             m1 = x
  86.     else:
  87.         if (x + m1) < min_s:
  88.             min_s = x + m1
  89.         if x < m2:
  90.             m1 = x
  91. print(min_s)   
  92.        
  93. # минимальная сумма кратная 123
  94. N = int(input())
  95. m = [30001] * 123
  96. min_s = 60001
  97. for i in range(N):
  98.     x = int(input())
  99.     # x % 123 = 1 -> x[122]
  100.     # x % 123 = 2 -> x[121]
  101.     # x % 123 = 3 -> x[120]
  102.     # ...
  103.     # x % 123 = k -> x[123 - k]
  104.     # x % 123 = 0 -> x[123 - 0] = x[123]% 123 = x[0]
  105.    
  106.     if (x + m[(123 - x % 123) % 123]) < min_s:
  107.         min_s = x + m[(123 - x % 123) % 123]
  108.    
  109.     if x < m[x % 123]:
  110.         m[x % 123] = x
  111.  
  112. print(min_s)
  113.  
  114.  
  115. # разница в идексах не менее 5
  116. N = int(input())
  117. a = []
  118. for i in range(N):
  119.     a.append(int(input()))
  120. min = 60001
  121. for i in range(N):
  122.     for j in range(i + 5, N):
  123.         s = a[i] + a[j]
  124.         if  s % 2 == 0 and s < min:
  125.             min = s
  126. print(min)
  127.  
  128. # очередь + минимальная чётная сумма
  129. N = int(input())
  130. m1 = 30001 # неч
  131. m0 = 30001 # чет
  132. min_s = 60001
  133. q = []
  134. for i in range(4):
  135.     q.append(int(input()))
  136. for i in range(N - 4):
  137.     x = int(input())
  138.     if x % 2 == 0:
  139.         if (x + m0) < min_s:
  140.             min_s = x + m0
  141.     else:
  142.         if (x + m1) < min_s:
  143.             min_s = x + m1
  144.     if q[0] % 2 == 0 and q[0] < m0:
  145.         m0 = q[0]
  146.     if q[0] % 2 == 1 and q[0] < m1:
  147.         m1 = q[0]
  148.     # 1
  149.     # q = q[1:] + [x]
  150.     # 2
  151.     # q.pop(0)
  152.     # q.append(x)
  153.     # 3
  154.     # for i in range(3):
  155.     #     q[i] = q[i + 1]
  156.     # q[3] = x
  157. print(min_s)
Add Comment
Please, Sign In to add comment