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


ДАЮ 70 БАЛЛОВ ЗА ПРАВИЛЬНЫЙ КОД НА PHYTON 3

По каналу связи передаются данные в виде последовательности положительных целых чисел. Количество чисел заранее неизвестно, но не менее двух, признаком конца данных считается число 0. Нужно найти контрольное значение. Оно равно такому максимально возможному произведению двух чисел из переданного набора, которое делится на 7, но не делится на 49. Если такое произведение получить нельзя, контрольное значение считается равным 1.


Использование массивов в данной задаче запрещено.


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


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


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


Программа должна вывести одно число - контрольное значение.


Примеры

Ввод

Вывод

10

14

0

140

7

75

80

6

75

0

560

Ответы

Автор ответа: nelle987
4

Два соображения:

  1. Произведение делится на 7, но не делится на 49, если один из сомножителей делится на 7 (но не на 49), а второй - не делится на 7.
  2. Произведение будет больше, если каждый из сомножителей будет больше

Получаем такую идею: будем хранить максимальное из всех чисел, делящихся на 7, но не делящихся на 49, и максимальное из чисел, не делящихся на 7. Их произведение будет ответом.

Реализация (Python 3.8.1)

max_div_7 = 0

max_not_div_7 = 0

while (x := int(input())) != 0:

 if x % 7 != 0:

   max_not_div_7 = max(max_not_div_7, x)

 elif x % 7 == 0 and x % 49 != 0:

   max_div_7 = max(max_div_7, x)

if max_div_7 == 0 or max_not_div_7 == 0:

 print(1)

else:

 print(max_div_7 * max_not_div_7)


dima228132: Спасибо
BarbaraPeach: Пишу на Python 3.7 у меня не читает условие от while как это записать
nelle987: Замените цикл на бесконечный (условие на True), и в начале цикла пишите что-то вроде x = input(); if x == 0: break
BarbaraPeach: Я не понимаю(( можешь пж прям код написать
nelle987: Полный код в комментариях неудобно писать ( Попробуйте сделать то, что описано выше. В начале цикла, сразу после while, считайте с клавиатуры целое число x и, если оно равно нулю, выйдите из цикла. Если что-то конкретное не получится пишите
Похожие вопросы
Предмет: Українська мова, автор: denchic77