Найти - Пользователи
Полная версия: Помогите найти ошибку.
Начало » Центр помощи » Помогите найти ошибку.
1 2
Trancecore
Добрый день. Только начал изучать питон, и вот на одной из задач попал в тупик.
Сложность детская, но я в начале пути.

Вася делает ремонт в комнате размером 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

Не могу понять где я ошибаюсь или где можно оптимизировать.
doza_and
Я думаю что проблема в том что ваш подход - купить N рулонов. Расплавить их и заливать расплавом пол, не соответствует представлениям авторов задачи о технологии укладки линолиума. Он там не влезает то по ширине то по длине, обрезки всякие…

Округление делается функциями floor ceil.
@cckyi_boxxx
 print(s // (f - 1)) # А тут уже делим площадь, на рулоны и используем -1 как округление в большую сторону

Непонятно как это должно округлять в большую сторону, тут подойдет либо проверка на остаток от деления либо функции округление из модуля math.

И лучше сразу избегать непонятных интуитивно имен переменных, на такой мелочи сложности не будет но на чуть более сложном проекте сами-же запутаетесь.

код на форумы выкладывайте под теги что-бы было видно форматиролвание
[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())')
Trancecore
@cckyi_boxxx
Забыл уточнить. что это самое начало обучения, курс от ВШЭ.
И кроме самых простых функций еще ничего не используем, только стандартный набор +-, //,/, *, %
Вот при помощи всего этого надо решить данную задачу.
Trancecore
@cckyi_boxxx
тут подойдет либо проверка на остаток от деления
Видимо вот тут я и упустил что то.
py.user.next
  
>>> def f(a, b, d):
...     s = a * b
...     return s // d + (s % d != 0)
... 
>>> f(2, 2, 3)
2
>>> f(2, 2, 4)
1
>>>
Trancecore
py.user.next
Спасибо, в итоге вот так все отлично сработало.
И я понял свою проблему, и как это все посчиталось.
 A = int(input())
B = int(input())
D = int(input())
s = A * B
print(s // D + (s % D != 0))
simonovaleksandr
Здравствуйте, я хотел сделать программу по изменению места положения точки одной линии
при нажатии на клавишу “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()
rami
Пропущены угловые скобки:

 c.bind_all('<KeyPress-Up>', Right)
simonovaleksandr
Я исправил ошибку, но при работе программы правая точка линии
опускается только на 1 пиксель ,и дальше не опускается.
Помогите пожалуйста эту проблему решить.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB