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
Для нечетных:
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
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP