Форум сайта python.su
Добрый день. Только начал изучать питон, и вот на одной из задач попал в тупик.
Сложность детская, но я в начале пути.
Вася делает ремонт в комнате размером A на B метров и хочет положить на пол линолеум. Линолеум продается в рулонах шириной 1 метр и длиной D метров. Какое минимальное количество рулонов необходимо купить Васе, чтобы линолеума хватило на покрытие всей площади комнаты?
Целые числа A, B и D задаются по одному в строке
Sample Input:
3
4
5
Sample Output:
3
Я решил это так :
A = int(input())
B = int(input())
D = int(input())
C = 1
s = A * B // Узнаем площадь комнаты
f = C * D // Узнаем размер рулонов
print(s // (f - 1)) // А тут уже делим площадь, на рулоны и используем -1 как округление в большую сторону.
Ответ выдается верный, а программа проверки говорит : Failed test #2 of 8. Wrong answer
Не могу понять где я ошибаюсь или где можно оптимизировать.
Офлайн
Я думаю что проблема в том что ваш подход - купить N рулонов. Расплавить их и заливать расплавом пол, не соответствует представлениям авторов задачи о технологии укладки линолиума. Он там не влезает то по ширине то по длине, обрезки всякие…
Округление делается функциями floor ceil.
Отредактировано doza_and (Дек. 5, 2020 08:09:23)
Офлайн
print(s // (f - 1)) # А тут уже делим площадь, на рулоны и используем -1 как округление в большую сторону
[code python]#здесь код[/code]
import math print("введите ширину комнаты:") room_width = int(input()) print("введите длину комнаты:") room_length = int(input()) print("введите длину рулона линолеума:") linoleum_length = int(input()) room_s = room_width * room_length # так как ширина рулона равна 1 метру ее можно не учитывать в рассчетах if room_s % linoleum_length: lin_num = room_s // linoleum_length + 1 else: lin_num = room_s / linoleum_length print('необходимо %i рулонов' % lin_num, '(вычислено if-ами)') print('необходимо %i рулонов' % math.ceil(room_s / linoleum_length), '(вычислено math.ceil())')
Офлайн
@cckyi_boxxxЗабыл уточнить. что это самое начало обучения, курс от ВШЭ.
Офлайн
@cckyi_boxxxВидимо вот тут я и упустил что то.
тут подойдет либо проверка на остаток от деления
Офлайн
>>> def f(a, b, d): ... s = a * b ... return s // d + (s % d != 0) ... >>> f(2, 2, 3) 2 >>> f(2, 2, 4) 1 >>>
Офлайн
py.user.nextСпасибо, в итоге вот так все отлично сработало.
A = int(input()) B = int(input()) D = int(input()) s = A * B print(s // D + (s % D != 0))
Офлайн
Здравствуйте, я хотел сделать программу по изменению места положения точки одной линии
при нажатии на клавишу “PgUp”,но при нажатии ничего не происходит , помогите пожалуйста
решить эту проблему. Вот код программки:
from tkinter import *
root=Tk()
root.minsize(width=300,height=300)
root.resizable(0,0)
c=Canvas(root,width=300,height=300 )
c.pack()
def Right(event):
if event.keysym=='Up':
y=100
y=y+1
print(“нажата клавиша”)
c.create_line(100,100,200,y)
c.bind_all('KeyPress-Up',Right)
root.mainloop()
Офлайн
Пропущены угловые скобки:
c.bind_all('<KeyPress-Up>', Right)
Офлайн
Я исправил ошибку, но при работе программы правая точка линии
опускается только на 1 пиксель ,и дальше не опускается.
Помогите пожалуйста эту проблему решить.
Офлайн