Предмет: Информатика, автор: Gdaniatyt

Часовой механизм

К вам обратился владелец часовой мастерской, которая делает часы с прозрачным корпусом. В мастерской есть 1 проблема: дизайнеры придумывают то, как будут выглядят часы, но не задумываются о том, как шестеренки будут крутиться. Поэтому, когда дизайн получают мастера, им приходится проверять работоспособность нарисованного дизайнерами механизма – проверять не заклинит ли механизм от сцепки двух крутящихся в одном направлении шестеренок.

Напишите программу, которая будет делать эту работу за мастеров.

Входные данные:

Первая строка содержит количество шестеренок NN (число от 1 до 1000 включительно).

Вторая строка содержит количество связей между шестеренками MM (число от 0 до 1000 включительно), которые сцеплены между собой (если одна из них крутится по часовой стрелке, вторая должна крутиться против часовой и наоборот).

Далее идет ММ строк с парами чисел, являющихся номерами сцепленных между собой шестеренок (нумерация начинается с 1).

Выходные данные:

Программа должна вывести одно из 2 слов: ‘good’, если механизм работоспособен или ‘bad’, если механизм заклинит.

Sample Input:

4
4
1 2
2 3
3 4
4 1
Sample Output:

good
Напишите программу. Тестируется через stdin → stdout

Time Limit: 15 секунд
Memory Limit: 256 MB


Nikitat0: Обменяю решение этой задачи на решение второй (ОНТИ) (С меня решение этой) вк ид nikitat0
Nikitat0: Уже не актуально
Ffffffff66: Решение 2й есть в интернете, а эту как решать?
Ffffffff66: ??
alenka200416: кто решил 3 ?
demchenkosonya: 4 решила
demchenkosonya: 3 и 5 нет
galyatcherkashi: Кто-нибудь решил 3
demchenkosonya: кто-нибудь решил 3 или 5, могу обменять на 4

Ответы

Автор ответа: nikitademerza
5

Ответ:

gears_count = int(input())

connections_count = int(input())

connections = []

for i in range(connections_count):

   inp = input()

   connections = connections + [[int(inp.split()[0]), int(inp.split()[1])]]

def get_connections_of_gear(gear=1, connections_arr=[[0]]):

   gear_connections = 0

   if connections_arr:

       for i in range(connections_count * 2):

           if connections_arr[i // 2][i % 2] == gear:

               gear_connections += 1

   return gear_connections

def is_valid():

   if gears_count < 3 or connections_count < 3:

       return "good"

   elif gears_count % 2 == 0:

       gears = 0

       for i in range(gears_count):

           if get_connections_of_gear(i, connections) > 2:

               gears += 1

       if gears % 2 == 0:

           return "good"

   elif not gears_count % 2 == 0:

       gears = 0

       for i in range(gears_count):

           if get_connections_of_gear(i, connections) > 2:

               gears += 1

       if not gears % 2 == 0:

           return "good"

   return "bad"

print(is_valid())

Объяснение:

8 из 11

Похожие вопросы
Предмет: История, автор: ЮсуповРусланчик