Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
9 / 7 / 2
Регистрация: 07.05.2024
Сообщений: 75

Задача Трамваи

01.08.2024, 10:16. Показов 913. Ответов 9

Студворк — интернет-сервис помощи студентам
Есть три трамвайных маршрута, по каждому из которых курсирует один трамвай. В первый день нового года ровно в полночь все трамваи отправляются по своим маршрутам из одной точки (назовем депо). Известно, что первому трамваю на то, чтобы проехать весь маршрут и вернуться в депо требуется a минут, второму — b минут, а третьему — c минут. Таким образом, первый трамвай отправляется из депо в моменты времени 0, a, 2a, 3a, ..., второй — в моменты времени 0, b, 2b, 3b, ..., а третий в моменты времени 0, c, 2c, 3c, ... .

Момент времени называется подходящим для пересадки, если в этот момент все три трамвая отправляются из депо. Например, если a = 1, b = 2, c = 1, то моменты времени 0 и 2 являются подходящими для пересадки, а момент времени 1 не является, потому что в этот момент времени второй трамвай находится в пути.

Вся ситуация происходит на далекой планете, в которой сутки длятся ровно t минут. Это означает, что в первый день происходят все моменты времени с 0-го по (t - 1)-й включительно, во второй день — c t-го по (2t - 1)-й включительно, в третий — с 2t-го по (3t - 1)-й включительно и так далее. Определите, сколько подходящих для пересадки моментов времени произойдёт в d-й день.

Формат входных данных
В пяти строках заданы пять целых чисел a, b, c, t и d (a, b, c , t, d) — время полного прохождения маршрута первым, вторым и третьим трамваями, соответственно, количество минут в сутках и номер дня.

Формат результата
Выведите одно целое число — количество подходящих для пересадки моментов времени в d-й день.

Примеры
Входные данные
1
2
1
3
1
Результат работы
2
Входные данные
2
3
4
7
2
Результат работы
1
Входные данные
2
3
4
3
3
Результат работы
0



Вроде правильное решение, но часть тестов (~30%) валятся с неправильным ответом. Возможно, какой-то пограничный случай не в ту сторону считаю.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def nod(a, b):
    if a < b:
        a, b = b, a
    while b:
        a, b = b, a % b
    return a
 
def nok(a, b):
  return (a/nod(a,b))*b
 
a = int(input())
b = int(input())
c = int(input())
t = int(input())
d = int(input())
 
nok1 = nok(nok(a,b),c)
print('nok=',nok1)
kolvo = t*d//nok1 - t*(d-1)//nok1
 
if d==1:
    print(int(kolvo)+1)
else:
    print(int(kolvo))
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.08.2024, 10:16
Ответы с готовыми решениями:

Логическая задача про трамваи
Добрый день. Имеется 4 человека : А, P, V, L У них три профессии СЛЕСАРЬ, ЭЛЕКТРОМНОТЕР, МАЛЯР, ФРЕЗЕРОВЩИК И номер у каждого, но...

В Польше малолетний хакер пускал трамваи под откос
Польский вундеркинд с помощью самодельного инфракрасного пульта дистанционного управления взломал систему управления транспортом в родном...

"Трамваи и поезда"
Здравствуйте, у меня есть задание, реализовать программу, в которой можно вводить трамваи и их остановки, просматривать все остановки...

9
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
01.08.2024, 10:40
Цитата Сообщение от semen1984 Посмотреть сообщение
return (a/nod(a,b))*b
Никогда не делайте так. Проводите только целочисленное деление: return (a//nod(a,b))*b
1
9 / 7 / 2
Регистрация: 07.05.2024
Сообщений: 75
01.08.2024, 12:54  [ТС]
Цитата Сообщение от Red white socks Посмотреть сообщение
Никогда не делайте так. Проводите только целочисленное деление: return (a//nod(a,b))*b
Действительно, серьёзное упущение, спасибо!
Но дело не только в этом. По-прежнему часть тестов не проходят по ответу.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def nod(a, b):
    if a < b:
        a, b = b, a
    while b:
        a, b = b, a % b
    return a
 
def nok(a, b):
  return (a//nod(a,b))*b
 
a = int(input())
b = int(input())
c = int(input())
t = int(input())
d = int(input())
 
nok1 = nok(nok(a,b),c)
#print('nok=',nok1)
 
kolvo = t*d//nok1 - t*(d-1)//nok1
 
#print(int(kolvo))
if d==1:
    print(kolvo+1)
else:
    print(kolvo)
Добавлено через 27 минут
Ещё немного улучшил результат. Полночь (0 минут) считается первым днём, а в остальных случаях следующим днём.
80% тестов пройдено.
Какие-то ещё пограничные случаи упускаю, наверное.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def nod(a, b):
    if a < b:
        a, b = b, a
    while b:
        a, b = b, a % b
    return a
 
def nok(a, b):
  return (a//nod(a,b))*b
 
a = int(input())
b = int(input())
c = int(input())
t = int(input())
d = int(input())
 
nok1 = nok(nok(a,b),c)
kolvo = (t*d-1)//nok1 - (t*(d-1)-1)//nok1
if d==1:
    print(kolvo+1)
else:
    print(kolvo)
0
9 / 7 / 2
Регистрация: 07.05.2024
Сообщений: 75
01.08.2024, 13:14  [ТС]
есть случай
1
1
1
1
1
ответ 2, а должно быть 1

других пока не нашёл
0
55 / 39 / 23
Регистрация: 07.05.2024
Сообщений: 58
01.08.2024, 14:22
Лучший ответ Сообщение было отмечено semen1984 как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def nod(a, b):
    if a < b:
        a, b = b, a
    while b:
        a, b = b, a % b
    return a
 
def nok(a, b):
  return (a // nod(a, b)) * b
 
a = int(input())
b = int(input())
c = int(input())
t = int(input())
d = int(input())
 
nok1 = nok(nok(a,b),c)
start_time = (d - 1) * t  
end_time = d * t - 1
start = (start_time // nok1 + 1) * nok1 if start_time % nok1 else start_time
print((end_time - start) // nok1 + 1)
1
9 / 7 / 2
Регистрация: 07.05.2024
Сообщений: 75
01.08.2024, 14:33  [ТС]
contrlc,
Ваше решение прошло все тесты. Спасибо за подсказку!
0
Вирусоборец
 Аватар для thyrex
14449 / 7488 / 1582
Регистрация: 06.09.2009
Сообщений: 27,132
01.08.2024, 15:33
semen1984, где Вы берете все эти чудесные задачи?
0
9 / 7 / 2
Регистрация: 07.05.2024
Сообщений: 75
01.08.2024, 16:36  [ТС]
Цитата Сообщение от thyrex Посмотреть сообщение
semen1984, где Вы берете все эти чудесные задачи?
это часть задач из курса по информатике на одной из образовательных платформ
те задачи, которые самостоятельно не получается решить, выкладываю сюда
0
Вирусоборец
 Аватар для thyrex
14449 / 7488 / 1582
Регистрация: 06.09.2009
Сообщений: 27,132
01.08.2024, 17:07
semen1984, я ожидал увидеть название этой платформы
0
9 / 7 / 2
Регистрация: 07.05.2024
Сообщений: 75
01.08.2024, 17:34  [ТС]
thyrex, Тинькофф Образование
Но бОльшая часть задач оттуда встречается на других подобных платформах, профильных сменах лагерей, кружков школ и т.д.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.08.2024, 17:34
Помогаю со студенческими работами здесь

Олимпиадная задача по программированию. PascalABC.NET. Задача L. Переключение между окнами
Когда пользователь работает в операционной системе Winux, у него часто запущено несколько приложений. Каждое из приложений работает в...

Задача со строками. Задача находится на фотке, которая прикреплена к сообщению
Фотку прикрепил к сообщению. П.5.4. Правил Запрещено создавать темы с бессмысленными названиями вроде &quot;Помогите!&quot;,...

Васильев C# Глава 7 задача 8 (Просьба объяснить формулировку(задача внутри)
Текст задачи Напишите программу с классом, у которого есть текстовое поле. Значение текстовому полю присваивается при создании объекта...

Васильев C# Глава 8 задача 2 (Просьба объяснить формулировку(задача внутри)
Текст задачи Написать программу , в которой есть класс с полем, являющимся ссылкой на одномерный целочисленный массив. У класса есть...

Задача при создание нового лида выводится задача от несущ.пользователя Б24
При создание нового Лида Выходит уведомление от пользователя которого нету в компаний. Как поменять пользователя???


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru