По заданию на ввод подается Х - количество плиток в упаковке. Нужно найти сколько упаковок необходимо купить для того чтобы при использовании ВСЕХ - вопрос №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. Где ошибка???
При входных данных 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
Добрый день. Меня заинтересовал ваш ответ "При входных данных 12 нам нужно найти минимальное количество упаковок, чтобы получить квадрат. В ваш..." на вопрос http://www.liveexpert.org/topic/view/5589486-po-zadaniyu-na-vvod-podaetsya-h-kolichestvo-plitok-v-upakovke-nuzhno-najti-skolko-upakovok-neobhodimo-kupit-dlya-togo-chtobi-pri. Можно с вами обсудить этот ответ?