Сколько поворотов списка потребуется, чтобы он вернулся к изначальному виду?
Дано число n, соответствующее количеству последовательных чисел в списке. Например n=4 дает список 1, 2, 3, 4. При каждом смещении первые два числа переносятся в конец и меняются местами. Необходимо выяснить сколько поворотов потребуется, чтобы список вернулся к изначальному виду.
1 2 3 4 -> 3 4 2 1 -> 2 1 4 3 -> 4 3 1 2 -> 1 2 3 4 - 4 поворота Если n = 5 ,то получается 6 поворотов. Если 7, то 12. Если 8, то 8. Если 5, то 6.
Создавать сам список и вращать его не нужно, это понятно, как делается. А нужно каким-то образом вывести формулу, чтобы итоговое количество вращений вычислить. При этом для четных чисел, как мне пока кажется, количество вращений всегда равно n. А вот с нечетными я никакой логики проследить не могу.
def count(n):
result = 0
if n % 2 == 0:
result = n
Ответы (1 шт):
Для нечетных:
count = int(len(n)/2) * (int(len(n)/2) + 1)
Или покороче:
count = len(n)//2 * (len(n)//2 + 1) # // - целочисленное деление
В понятных словах: x * (x+1), где x - целая часть от деления количества элементов на два. Например, для 7 элементов: 3 * 4, потому что 7/2 = 3,5.