Top.Mail.Ru
p

По заданию на ввод подается Х - количество плиток в упаковке. Нужно найти сколько упаковок необходимо купить для того чтобы при использовании ВСЕХ - вопрос №5589486

плиток из них можно было выложить квадрат. Например в упаковке 12 плиток, тогда нужно 3 упаковки чтоб получился квадрат 6 на 6 плиток. Я написала такой код: import math x = int(input()) count = 0 s = math.sqrt(x) i = int(math.sqrt(x)) while s > i: x = x + x count += 1 s = math.sqrt(x) i = int(math.sqrt(x)) if s == i: print(count) break но при вводе 12, он выдает не 3. Где ошибка???
24.10.24
1 ответ

Ответы

При входных данных 12 нам нужно найти минимальное количество упаковок, чтобы получить квадрат.

 

  • В вашем коде было x = x + x, что удваивало x каждый раз. Это приводило к слишком быстрому росту числа.
  • Условие s > i работало некорректно для проверки полного квадрата.
  • break был внутри условия if, что могло привести к бесконечному циклу. 

Код:

import math

x = int(input()) # количество плиток в одной упаковке
total = x # общее количество плиток
count = 1 # начинаем с одной упаковки

while True:
# проверяем, является ли общее количество плиток полным квадратом
sqrt = math.sqrt(total)
if sqrt == int(sqrt): # если корень целый
print(count)
break
# если не квадрат, добавляем ещё одну упаковку
total += x
count += 1

 

26.10.24
Посмотреть всех экспертов из раздела Технологии > Java/J2EE
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store