Торговля акциями
В настоящее время на бирже активно используются компьютерные системы для торговли акциями, которые упрощают и автоматизируют процесс покупки и продажи акций. Некоторые из них даже позволяют торговать вообще без участия человека.
Конечно, основным критерием, по которому оцениваются такие системы, является прибыль, которую приносит торговля с их использованием. Для ее совершенствования при построении этих систем используются различные математические методы и модели.
Основная трудность создания таких систем состоит в том, что они должны каким-то образом учитывать изменение стоимости акций в будущем, а также прогнозировать его. Ваша задача несколько проще — уже известны курсы купли-продажи акций за весь период N дней, вам просто нужно разработать оптимальную стратегию продаж и покупок. При этом для простоты будем считать, что в течение этих N дней вы можете купить акции не более одного раза, а продать акции вы также можете не более одного раза.
Кроме того, будем считать, что продажа и покупка будут осуществляться только акциями одного типа. На начало этого периода у вас имеется сумма Х рублей. Для каждого из дней известна цена a (от Ask — цена предложения), по которой можно купить одну акцию, и цена b, по которой можно продать одну акцию. При этом в соответствии с действующими правилами торговли на бирже разрешается продавать и покупать только целое количество акций (например, если у вас 5 рублей, а акция стоит 2 рубля, то вы можете купить не более двух акций). Требуется написать программу, которая на основе имеющихся данных о стоимости акций в каждый день найдет оптимальную стратегию покупки и продажи акций.
Входные данные
Первая строка содержит целые числа N и X (1 ≤ N ≤ 100 000,1 ≤ X ≤ 106). Во второй строке записано N целых чисел a[1], ..., a[N]. Третья строка содержит N целых чисел b[1], ..., b[N](1 ≤ bi ≤ a ≤ 1000).
Выходные данные
В первой строке выведите максимальную сумму, которую вы можете иметь в конце рассматриваемого периода. Во второй строке выведите два числа — номер дня d[1], в который можно купить акции, и номер дня d[2], в который эти акции можно продать (должно выполняться неравенство d[2] > d[1]). Это означает, что покупается столько акций, сколько можно купить за Х рублей, а затем все они продаются. Если найденная вами стратегия не требует продажи и покупки акций, то во второй строке выведите «-1 -1». Если существует несколько вариантов оптимальной стратегии, то выведите любой из них.
Я пробовал сделать это сам:
days, cash = map(int, input().split())
buy = list(map(int, input().split()))
sell = list(map(int, input().split()))
ibest = 0 # minim
jbest = 1 # maxim
imin = 0
isFound = False
for j in range(2, days):
if buy[j - 1] < buy[imin]: imin = j - 1
profit = cash // buy[ibest] * sell[jbest] + cash % buy[ibest]
cur_profit = cash // buy[imin] * sell[j] + cash % buy[imin]
if profit < cur_profit and cur_profit > 0:
jbest = j
ibest = imin
isFound = True
if isFound:
print(cash // buy[ibest] * sell[jbest] + cash % buy[ibest])
print(ibest + 1, jbest + 1)
else:
print(cash)
print(-1, -1)
but this doesn`t work inn 1 case (WA) please help!
Подробнее здесь: https://stackoverflow.com/questions/798 ... sk-actions
Алгоритм действий задачи ⇐ Python
Программы на Python
1766648263
Anonymous
Торговля акциями
В настоящее время на бирже активно используются компьютерные системы для торговли акциями, которые упрощают и автоматизируют процесс покупки и продажи акций. Некоторые из них даже позволяют торговать вообще без участия человека.
Конечно, основным критерием, по которому оцениваются такие системы, является прибыль, которую приносит торговля с их использованием. Для ее совершенствования при построении этих систем используются различные математические методы и модели.
Основная трудность создания таких систем состоит в том, что они должны каким-то образом учитывать изменение стоимости акций в будущем, а также прогнозировать его. Ваша задача несколько проще — уже известны курсы купли-продажи акций за весь период N дней, вам просто нужно разработать оптимальную стратегию продаж и покупок. При этом для простоты будем считать, что в течение этих N дней вы можете купить акции не более одного раза, а продать акции вы также можете не более одного раза.
Кроме того, будем считать, что продажа и покупка будут осуществляться только акциями одного типа. На начало этого периода у вас имеется сумма Х рублей. Для каждого из дней известна цена a[i] (от Ask — цена предложения), по которой можно купить одну акцию, и цена b[i], по которой можно продать одну акцию. При этом в соответствии с действующими правилами торговли на бирже разрешается продавать и покупать только целое количество акций (например, если у вас 5 рублей, а акция стоит 2 рубля, то вы можете купить не более двух акций). Требуется написать программу, которая на основе имеющихся данных о стоимости акций в каждый день найдет оптимальную стратегию покупки и продажи акций.
Входные данные
Первая строка содержит целые числа N и X (1 ≤ N ≤ 100 000,1 ≤ X ≤ 106). Во второй строке записано N целых чисел a[1], ..., a[N]. Третья строка содержит N целых чисел b[1], ..., b[N](1 ≤ bi ≤ a[i] ≤ 1000).
Выходные данные
В первой строке выведите максимальную сумму, которую вы можете иметь в конце рассматриваемого периода. Во второй строке выведите два числа — номер дня d[1], в который можно купить акции, и номер дня d[2], в который эти акции можно продать (должно выполняться неравенство d[2] > d[1]). Это означает, что покупается столько акций, сколько можно купить за Х рублей, а затем все они продаются. Если найденная вами стратегия не требует продажи и покупки акций, то во второй строке выведите «-1 -1». Если существует несколько вариантов оптимальной стратегии, то выведите любой из них.
Я пробовал сделать это сам:
days, cash = map(int, input().split())
buy = list(map(int, input().split()))
sell = list(map(int, input().split()))
ibest = 0 # minim
jbest = 1 # maxim
imin = 0
isFound = False
for j in range(2, days):
if buy[j - 1] < buy[imin]: imin = j - 1
profit = cash // buy[ibest] * sell[jbest] + cash % buy[ibest]
cur_profit = cash // buy[imin] * sell[j] + cash % buy[imin]
if profit < cur_profit and cur_profit > 0:
jbest = j
ibest = imin
isFound = True
if isFound:
print(cash // buy[ibest] * sell[jbest] + cash % buy[ibest])
print(ibest + 1, jbest + 1)
else:
print(cash)
print(-1, -1)
but this doesn`t work inn 1 case (WA) please help!
Подробнее здесь: [url]https://stackoverflow.com/questions/79854728/algorithm-task-actions[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия