Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите разобраться с задачей на Python, пожалуйста.

Анастасия Бережнева Ученик (228), закрыт 5 лет назад
Такие вопросы уже были, но я бы хотела разобраться именно со своим 'кодом'.Условие:
В школе решили набрать три новых математических класса. Так как занятия по математике у них проходят в одно и то же время, было решено выделить кабинет для каждого класса и купить в них новые парты. За каждой партой может сидеть не больше двух учеников. Известно количество учащихся в каждом из трёх классов. Сколько всего нужно закупить парт чтобы их хватило на всех учеников? Программа получает на вход три натуральных числа: количество учащихся в каждом из трех классов. (входные/выходные данные: 20 21 22 / 32; 26 20 16 / 31 ; 25 21 23/36 ; 17 19 18/28)

a = int(input())
b = int(input())
c = int(input())
d=a+b+c
m=d//2
if d%2>0:
d1=m+1
print(d1)
else:
print(m)
Первые две входные данные проходят с правильным ответом. Я не могу разобраться, почему при 2-х последних данных (25 21 23/36 ; 17 19 18/28) мы должны получить именно такие ответы. Просто 25+21+23 =69. 69/2 = 34,5. Следовательно ответ должен быть 35, а не 36. Или я чего-то не понимаю.
Лучший ответ
Сеня Сенечкин Мудрец (13127) 5 лет назад
так происходит, потому что нужно считать не общее число учеников-парт, а для каждого класса отдельно. если в двух классах нечетное количество учеников, то им нужна не одна парта, а две.
рабочий и понятный новичку код:

c1 = int(input())
c2 = int(input())
c3 = int(input())

if c1 % 2: c1 = int((c1 + 1)/2)
else: c1 = int(c1 / 2)

if c2 % 2: c2 = int((c2 + 1)/2)
else: c2 = int(c2 / 2)

if c3 % 2: c3 = int((c3 + 1)/2)
else: c3 = int(c3 / 2)

print(c1+c2+c3)
Анастасия БережневаУченик (228) 5 лет назад
Я Вас поняла, спасибо огромное.
Остальные ответы
Андрей Высший разум (472599) 5 лет назад
Да, надо считать для каждого класса отдельно. Но сам расчёт предельно простой:

a = int(input())
b = int(input())
c = int(input())
print((a + 1) // 2 + (b + 1) // 2 + (с + 1) // 2)
ЕЩЁ НЕЗНАЮЗнаток (427) 1 год назад
зачем к каждому классу прибавлять 1, если можно просто найти сумму человек в классе,нацело ее поделить и просто потом прибавить 1?
Андрей Высший разум (472599) ЕЩЁ НЕЗНАЮ, Затем, что твой вариант ошибочен. Нет "суммы человек в классе". Есть три РАЗНЫХ класса, в КАЖДЫЙ из которых надо поставить СВОИ парты. Предположим, в классах 3, 5 и 7 человек: Твой вариант: (3 + 5 + 7) / 2 + 1 = 8 парт Реально требуется: 2 + 3 + 4 = 9 парт Предположим, в классах 4, 6 и 8 человек: Твой вариант: (4 + 6 + 8) / 2 + 1 = 10 парт Реально требуется: 2 + 3 + 4 = 9 парт
Илья Кряжевских Ученик (174) 3 недели назад
Поидее можно и так
import math
a=int(input())
b=int(input())
c=int(input())
print(math.ceil((a+b+c)/2))
Похожие вопросы