Что не так с кодом? | Sololearn: Learn to code for FREE!
New course! Every coder should learn Generative AI!
Try a free lesson
0

Что не так с кодом?

Вы находитесь на большом корабле и бросаете якорь рядом с прекрасным пляжем. Есть небольшая лодка, перевозящая пассажиров туда и обратно, и вы становитесь на нее в очередь. Как долго вам придется ждать, чтобы добраться до пляжа? Вы знаете, что на лодке могут поместиться 20 человек, а каждая поездка на берег занимает 10 минут в каждую сторону. Задача: Определите свое время ожидания, если вы знаете общее количество людей, стоящих в очереди перед вами. Формат ввода: Целое число, представляющее общее количество людей, стоящих перед вами в очереди. Формат вывода: Целое число, представляющее количество минут, которые вам придется подождать, пока вы не окажетесь на пляже. Пример ввода: 15 Выходные данные образца: 10 a = int(input()) b = 20 h = ((a-1) // b ) t = 0 if h == 0: t += 10 else: t = (h+1)*20+10 print (t)

10th Feb 2023, 9:16 PM
Антон Чернявский
Антон Чернявский - avatar
11 Answers
+ 1
Допустим, впереди находится 28 человек, тогда потребуется одна поездка для первых 20 человек, что займёт 20 минут (туда и обратно по 10 минут), а во вторую поездку вы уже попадаете на лодку и вам потребуется 10 минут (в одну сторону), чтобы добраться до берега. Суммируя всё время - получаем 30 минут. Теперь пройдёмся по коду, а=28. Далее, в h заносится значение (28-1) // 20, итог h=1. В условном операторе сразу переходим к else: t=(1+1) *20+10 t=50, а должен быть, в данном случае, 30
10th Feb 2023, 11:36 PM
Mikhail
Mikhail - avatar
0
Тогда до меня не совсем доходит почему при 80 должно получиться 90 мин? 80й человек попадает в 4ю лодку, это значит по 20 минут на первые три(60 мин) и 10 на переезд до берега, итого 70 минут, но никак не 90
11th Feb 2023, 11:41 AM
Антон Чернявский
Антон Чернявский - avatar
0
Точнее совсем не доходит
11th Feb 2023, 11:42 AM
Антон Чернявский
Антон Чернявский - avatar
0
Это такой результат во втором открытом тесте
11th Feb 2023, 11:43 AM
Антон Чернявский
Антон Чернявский - avatar
0
a = int(input()) b = 20 h = ((a-1) // b + 1) if h > 1: t = (h-1)*20+10 print(t) else: t = 10 print(t)
11th Feb 2023, 11:45 AM
Антон Чернявский
Антон Чернявский - avatar
0
Исходя из условий задачи, которые вы обозначили в первом топике, а именно: "Формат ввода: Целое число, представляющее общее количество людей, стоящих ПЕРЕД вами в очереди", т.е. если у вас на ввод подаётся 80, значит перед вами 80 человек, а вы - 81ый и, как можете заметить, в 4ый заплыв не попадаете. В таком случае вам потребуется (4*20) +10=90 минут
11th Feb 2023, 11:52 AM
Mikhail
Mikhail - avatar
0
Если на ввод будет подано 79, т.е. вы 80ый человек в очереди, тогда ваши расчёты по поводу 70 минут - верны.
11th Feb 2023, 11:56 AM
Mikhail
Mikhail - avatar
0
Точно, вот где собака зарылась!
11th Feb 2023, 11:56 AM
Антон Чернявский
Антон Чернявский - avatar
0
Спасибо
11th Feb 2023, 11:56 AM
Антон Чернявский
Антон Чернявский - avatar
0
Теперь все срослось
11th Feb 2023, 11:57 AM
Антон Чернявский
Антон Чернявский - avatar
0
Пожалуйста 🤝
11th Feb 2023, 11:58 AM
Mikhail
Mikhail - avatar