100 баллов
Шестерёночки
Имя входного файла:
Стандартный ввод
Имя выходного файла:
Стандартный вывод
Ограничение по времени:
2 секунды
Ограничение по памяти:
256 мегабайт
Даны п шестерёнок, некоторые из них соединены между собой. Две сцепленные
могут врашаться только в разных направлениях.
Вам необходимо выяснить, может ли вращаться вся система шестеренок, и если может,
указать наименьшее количество Шестерёнок, которые нужно заставить вращаться.
Формат входного файла
В первой строке записаны два целых числа: п - количество шестерёноколичество
сцеплений между ними (2 < n < 103,1 < m < 105).
В каждой из следующих m строк записаны два различных числа і и j, которые определяют
номера сцепленных шестерёнок. Все шестерёнки пронумерованы целыми числами от 1 до n.
Формат выходного файла
В первой строке запишите одно число к - наименьшее количество шестерёнок, которые нужно
заставить врашаться.
В следующей строке к целых чисел - номера этих шестерёнок. Если решений несколько,
выведите любое из них.
Если запустить все шестерёнки невозможно, выведите -1.
Пример входных и выходных файлов
ввод
6 3
4 5
2 1
3 2
вывод
3
1 4 6
ввод
4 3
1 2
2 4
4 1
вывод
-1
Пояснение к примеру
В первом примере имеется 6 шестерёнок, межде ними 3 соединения. Все они будут
вращаться, если запустить три шестерёнки с номерами 1, 4 и 6.
Во втором примере все шестерёнки вращаться не смогут, поэтому в ответе -1.
Ответы на вопрос:
Числа Фибоначчи: циклом и рекурсией
Числа Фибоначчи – это ряд чисел, в котором каждое следующее число равно сумме двух предыдущих: 1, 1, 2, 3, 5, 8, 13, ... . Иногда ряд начинают с нуля: 0, 1, 1, 2, 3, 5, ... . В данном случае мы будем придерживаться первого варианта.
Формула:
F1 = 1
F2 = 1
Fn = Fn-1 + Fn-2
Пример вычисления:
F3 = F2 + F1 = 1 + 1 = 2
F4 = F3 + F2 = 2 + 1 = 3
F5 = F4 + F3 = 3 + 2 = 5
F6 = F5 + F4 = 5 + 3 = 8
...
Вычисление n-го числа ряда Фибоначчи с цикла while
Присвоить переменным fib1 и fib2 значения двух первых элементов ряда, то есть присвоить переменным единицы.
Запросить у пользователя номер элемента, значение которого он хочет получить. Присвоить номер переменной n.
Выполнять следующие действия n - 2 раз, так как первые два элемента уже учтены:
Сложить fib1 и fib2, присвоив результат переменной для временного хранения данных, например, fib_sum.
Переменной fib1 присвоить значение fib2.
Переменной fib2 присвоить значение fib_sum.
Вывести на экран значение fib2.
Примечание. Если пользователь вводит 1 или 2, тело цикла ни разу не выполняется, на экран выводится исходное значение fib2.
fib1 = 1
fib2 = 1
n = input("Номер элемента ряда Фибоначчи: ")
n = int(n)
i = 0
while i < n - 2:
fib_sum = fib1 + fib2
fib1 = fib2
fib2 = fib_sum
i = i + 1
print(fib2)
Компактный вариант кода:
fib1 = fib2 = 1
n = int(input("Номер элемента ряда Фибоначчи: ")) - 2
while n > 0:
fib1, fib2 = fib2, fib1 + fib2
n -= 1
print(fib2)
Вывод чисел Фибоначчи циклом for
В данном случае выводится не только значение искомого элемента ряда Фибоначчи, но и все числа до него включительно. Для этого вывод значения fib2 помещен в цикл.
fib1 = fib2 = 1
n = int(input())
if n < 2:
quit()
print(fib1, end=' ')
print(fib2, end=' ')
for i in range(2, n):
fib1, fib2 = fib2, fib1 + fib2
print(fib2, end=' ')
print()
Пример выполнения:
10
1 1 2 3 5 8 13 21 34 55
Рекурсивное вычисление n-го числа ряда Фибоначчи
Если n = 1 или n = 2, вернуть в вызывающую ветку единицу, так как первый и второй элементы ряда Фибоначчи равны единице.
Во всех остальных случаях вызвать эту же функцию с аргументами n - 1 и n - 2. Результат двух вызовов сложить и вернуть в вызывающую ветку программы.
def fibonacci(n):
if n in (1, 2):
return 1
return fibonacci(n - 1) + fibonacci(n - 2)
print(fibonacci(10))
Допустим, n = 4. Тогда произойдет рекурсивный вызов fibonacci(3) и fibonacci(2). Второй вернет единицу, а первый приведет к еще двум вызовам функции: fibonacci(2) и fibonacci(1). Оба вызова вернут единицу, в сумме будет два. Таким образом, вызов fibonacci(3) возвращает число 2, которое суммируется с числом 1 от вызова fibonacci(2). Результат 3 возвращается в основную ветку программы. Четвертый элемент ряда Фибоначчи равен трем: 1 1 2 3.
Объяснение:
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
Lesya260124.07.2022 15:30
-
yaroslav19839517.08.2021 16:29
-
Djamila110801.01.2021 06:07
-
ayskamaska10.06.2022 22:50
-
maksimananchenko22.03.2023 19:37
-
krll33311.02.2020 09:11
-
хэюяфй27.02.2021 11:34
-
oksyanna10.03.2023 18:31
-
Маргарин1101.01.2022 03:22
-
muckanvicktoria17.10.2021 01:59
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.