Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 77
1

На складе есть три станка, которые сортируют килограмм мусора за a, b, c, за какое минимальное время три станка, работая

07.12.2021, 18:22. Показов 1466. Ответов 9

Author24 — интернет-сервис помощи студентам
На складе есть три станка, которые сортируют килограмм мусора за a, b, c секунд соответственно, каждый станок работает по-разному:
-первый станок начинает сортировку не сразу после запуска - ему требуется t1 секунд, чтобы запуститься, только после запуска он начинает сортировать килограмм мусора за а секунд
-второй станок не может работать безостановочно - после того как он отсортирует килограмм мусора за b секунд, он останавливается на t2 секунд, после чего опять сортирует килограмм мусора за b секунд, после чего снова останавливается на t2 секунд, и т.д.
-третий станок объединяет в себе недостатки первого и второго станка - ему требуется t1 секунд для запуска и t2 для остановки между каждым отсортированным килограммом мусора
Определите, за какое минимальное время три станка, работая вместе, могут отсортировать n килограмм мусора.

Вот примеры входных параметров и результата:
1)
Input
n = 10
a = 2, b = 3, c = 4
t1 = 3, t2 = 5
Ouput
16

2)
Input
n = 100
a = 7, b = 6, c = 4
t1 = 5, t2 = 1
Ouput
100

Добавлено через 58 минут
В последнем примере в output опечатка
Должно быть
...
Output
209
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2021, 18:22
Ответы с готовыми решениями:

Три станка, производительности которых относятся как 5:3:2, выпускают одинаковые детали
Три станка, производительности которых относятся как 5:3:2, выпускают одинаковые детали, при этом...

Какова вероятность того, что в течение часа все три станка потребуют внимания рабочего?
Рабочий обслуживает три с танка, работающих независимо друг os друга. Вероятность того, что в...

Какова вероятность того, что в течение часа потребуют вмешательства наладчика все три станка
Наладчик обслуживает три станка. Вероятность того, что в течение часа потребует его вмешательства...

За какое минимальное время два принтера, работая параллельно, напечатают n листов?
Здравствуйте. Ко мне обратились с довольно простой по виду задачкой, но не соображу, как её решить....

На двух станках обрабатываются однотипные детали. Вероятность брака для станка No1 составляет 0,03, для станка No2 — 0,02. Обработанные детали складыв
На двух станках обрабатываются однотипные детали. Вероятность брака для станка No1 составляет 0,03,...

9
Status 418
Эксперт Python
4581 / 2348 / 602
Регистрация: 26.11.2017
Сообщений: 5,264
Записей в блоге: 3
07.12.2021, 18:26 2
бин.поиск по ответу. не благодари.
1
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 77
07.12.2021, 20:15  [ТС] 3
Хотелось как бы, какой нибудь кусок увидеть, который пояснял ваше сообщение. Примеры из интернета на тему бинарного поиска по ответу, не подходят из-за наличия t1 в условии, который не зависит от времени работы одного станка.
Вот например как этот код можно переработать с учетом t1?

Python
1
2
3
4
5
6
7
8
L, R = 0, (n - 1) * max(x, y + t2, z + t2)
while R > L + 1:
    M = (R + L) // 2
    if (M // x + M // (y+t2) + M // (z+t2)) < n - 1:
        L = M
    else:
        R = M
print(R + min(x, y + t2, z + t2))
0
Эксперт Python
8766 / 4423 / 1856
Регистрация: 27.03.2020
Сообщений: 7,261
07.12.2021, 20:45 4
lenusscik, напиши отдельно функцию, где по заданному промежутку времени выдавало бы количество переработанного кг мусора всеми тремя станками (для себя на бумаге - попробуй для первого варианта, сколько кг мусора переработается за, допустим, 25 секунд, затем за 15 и тп -> найдешь правильную формулу)
1
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 77
07.12.2021, 23:27  [ТС] 5
Я не понимаю как бинпоиск сделать с t1, серьезно. Куда его вставлять в коде?
По формулам сделал как Gdez посоветовал, и организовал одиночный цикл. Считает правильно, но на больших входных все равно ооооочень долго из-за цикла.
Python
1
2
3
4
5
6
7
def solve1(a, b, c, t1, t2, n):
    for s in range(t1, 10**15):
        k1 = (s - t1) / a
        k2 = s / (b + t2)
        k3 = (s - t1) / (c + t2)
        if round(k1 + k2 + k3) >= n:
            return s
Вот с помощью бинпоиска считает быстрее значительно, но повторюсь куда t1 вставить в код я не понимаю.Увы.
Python
1
2
3
4
5
6
7
8
9
def solve2(a, b, c, t1, t2, n):
    L, R = 0, max(a * (n - 1), (n - 1) * (b+t2), (n - 1) * (c+t2))
    while R > L + 1:
        M = (R + L) // 2
        if (M // a + M // (b + t2) + M // (c + t2)) < n - 1:
            L = M
        else:
            R = M
    return(R + min(a, b + t2, c + t2))
0
Эксперт Python
8766 / 4423 / 1856
Регистрация: 27.03.2020
Сообщений: 7,261
08.12.2021, 04:50 6
lenusscik,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def OK(x):
    x1 = x - t1
    b1 = b + t2
    c1 = c + t2
    
    ta = x1/a 
    
    tb = x//b1
    dtb = (x-tb*b1)/b
    tb += 1 if dtb > 1 else dtb
    
    tc = x1//c1
    dtc = (x1-tc*c1)/c
    tc += 1 if dtc > 1 else dtc
    
    return ta + tb + tc >= n
Это функция "по ответу". Осталось бинпоиск организовать...
0
3743 / 1938 / 612
Регистрация: 21.11.2021
Сообщений: 3,722
08.12.2021, 08:30 7
Лучший ответ Сообщение было отмечено lenusscik как решение

Решение

del

Добавлено через 3 минуты
Цитата Сообщение от eaa Посмотреть сообщение
бин.поиск по ответу
Решил реализовать для практики.

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
27
28
29
30
31
32
33
34
35
36
37
38
def f1(x, a, t1):
    if x < t1:
        res = 0
    else:
        res = (x - t1) // a
    return res
 
def f2(x, b, t2):
    res = (x + t2) // (b + t2)
    return res
 
def f3(x, c, t1, t2):
    res = (x + t2 - t1) // (c + t2)
    return res
 
def left_binary(n, a, b, c, t1, t2):
    L = -1
    R = n * a + t1
 
    while L < R - 1:
        M = (L + R) // 2
        if f1(M, a, t1) + f2(M, b, t2) + f3(M, c, t1, t2) < n:
            L = M
        else:
            R = M
    return R
 
n = int(input('n = '))
print()
a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
print()
t1 = int(input('t1 = '))
t2 = int(input('t2 = '))
 
x = left_binary(n, a, b, c, t1, t2)
print(x)
2
Status 418
Эксперт Python
4581 / 2348 / 602
Регистрация: 26.11.2017
Сообщений: 5,264
Записей в блоге: 3
08.12.2021, 08:37 8
idealist, молодец. честно я даже задачу не прочитал полностью. так что проверить не могу) вникать времени нет и лень)
что то функции у вас написаны не по-питоновски.
0
3743 / 1938 / 612
Регистрация: 21.11.2021
Сообщений: 3,722
08.12.2021, 08:41 9
Цитата Сообщение от eaa Посмотреть сообщение
что то функции у вас написаны не по-питоновски.
Ну, я только начал питон изучать.
0
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 77
08.12.2021, 10:48  [ТС] 10
idealist, а я вообще не программист, а киповец. Питон только неделю назад начал понимать чуть-чуть. Спасибо большое)
0
08.12.2021, 10:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2021, 10:48
Помогаю со студенческими работами здесь

Определить план заказов, минимизирующий стоимость, при условии, что к концу периода на складе должно остаться 4 станка
Склад пункта реализации станков имеет вместимость 25 единиц. Пополнение склада возможно только...

Определить время простоя станка
Всем привет! В задаче имеется входной конвеер, робот, многоканальное устройство и выходной...

На какое число оборотов в минуту нужно включить шпиндель токарного станка?
При точении сталей достигается скорость резания 240 м/мин. На какое число оборотов в минуту при...

Время безотказной работы станка имеет экспоненциальное распределение
Приветствую. Собственно вот: 1) Время X безотказной работы станка имеет экспоненциальное...

Описать, используя структуру данных запись, завод (наименование станка, время простоя в месяц, время работы в месяц). Составить программу, определя
Описать, используя структуру данных запись, завод (наименование станка, время простоя в месяц,...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru