Python: 17 - Сложность вычислений

1. Задан массив X[0..N-1]. Определите число операций сложения, которые выполняются при работе этой программы:
  S=X[0]+X[N-1]
for k in range(N):
X[k]+=X[k]+S
Для обозначения операции умножения используйте символ *.
Ответ: 
2. Задан массив X[0..N-1]. Определите число операций умножения, которые выполняются при работе этой программы:
  S=X[0]*X[N-1]
for k in range(N):
X[k]=2*X[k]+S
for i in range(3):
S=S*2
Для обозначения операции умножения используйте символ *.
Ответ: 
3. Задан массив X[0..N-1]. Определите число операций сложения, которые выполняются при работе этой программы:
  S=X[1]+X[N-1]+3
for k in range(N):
for m in range(N):
X[k]=X[k]+S
Для обозначения операции умножения используйте символ *.
Ответ: 
4. Количество операций при выполнении некоторого алгоритма равно
  T(N) = 5*N2 + 3*N + 1
Определите временную сложность алгоритма.
O(1)
O(N)
O(N2)
O(N3)
O(2N)
5. Количество операций при выполнении некоторого алгоритма равно
  T(N) = N3 - 3*N2 + N
Определите временную сложность алгоритма.
O(1)
O(N)
O(N2)
O(N3)
O(2N)
6. Количество операций при выполнении двух алгоритмов для массива размером N таково:
  T1(N) = N2 - N - 10
T2(N) = 4N + 40
Определите размер массива N, для которого время выполнения обоих алгоритмов одинаково.
Ответ: 
7. Задан массив X[0..N-1]. Определите временную сложность алгоритма:
  S=X[0]+X[N-1]
for k in range(N):
X[k]+=S
O(1)
O(N)
O(N2)
O(N3)
O(2N)
8. Задан массив X[0..N-1]. Определите временную сложность алгоритма:
  S=X[0]+X[N-1]
for k in range(N):
for m in range(5):
X[k]+=S
O(1)
O(N)
O(N2)
O(N3)
O(2N)
9. Задан массив X[0..N-1]. Определите временную сложность алгоритма:
  S=X[0]+X[N-1]
for k in range(N):
for m in range(N):
for q in range(N):
X[k]+=X[q]+S
O(1)
O(N)
O(N2)
O(N3)
O(2N)
10. Задан массив X[0..N-1]. Определите временную сложность алгоритма:
  S=X[0]+X[N-1]
for k in range(N):
for m in range(2*N*N):
X[k]+=X[m]+S
O(1)
O(N)
O(N2)
O(N3)
O(2N)
11. Задан массив X[0..N-1]. Определите временную сложность алгоритма:
  k=0
for i in range(N):
if X[i] == R:
k=i
break
O(1)
O(N)
O(N2)
O(N3)
O(2N)