Codechef рецепт неправильный ответ - PullRequest
0 голосов
/ 30 мая 2020

Почему я получаю неправильный ответ на этот вопрос? Программа дает правильные ответы на примеры тестов.

Ссылка на вопрос: https://www.codechef.com/problems/RECIPE

for i in range(int(input())):
    ingredients,*items = map(int,input().split())   
    if (0 not in items):
        trial = [x%min(items)==0 for x in items]    
        if all(trial):
            print(*[int(x//min(items)) for x in items ])
        else:
            print(*items)

1 Ответ

0 голосов
/ 30 мая 2020

Деление всех чисел на min(items) работает для примеров, которые они приводят, но не в достаточной степени. Рассмотрим третий пример:

3 15 9 6

Деление всего на 3 дает правильный ответ. Но что, если я поменял 3 на 6? 3 не отображается во вводе. (Деление на 6 не работает, потому что 15 и 9 - нечетные числа.)

Правильный способ сделать это - найти наибольший общий делитель , или НОД. НОД - это наибольшее число, которое делит каждое из чисел. Если вы не знаете, как рассчитать GCD, я предлагаю вам попытаться вычислить его, не глядя, как это сделать. Если вы застряли, вы можете найти алгоритм, но это достаточно простая настройка того, что у вас уже есть, и вы сможете сделать это самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...