TransWikia.com

Сколько поворотов списка потребуется, чтобы он вернулся к изначальному виду?

Stack Overflow на русском Asked by braflovsky on October 9, 2020

Дано число 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

One Answer

Для нечетных:

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.

Correct answer by Эникейщик on October 9, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP