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

Ребята, где у меня ошибка Торговля акциями

09.08.2021, 10:46. Показов 2216. Ответов 5

Студворк — интернет-сервис помощи студентам
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
n,x = input().split()
n = int(n)
x = int(x)
f = 1
 
a = [int(x)for x in input().split()]
b = [int(x)for x in input().split()]
ibest = 0
jbest = 1
imin = 0
if n == 1:
    print(x)
    print(-1, -1)
    f == 0
for j in range(2, n):
    if f == 0:
        break
    if a[j-1] < a[imin]:
        imin =  j - 1
    if x//a[imin]*b[j] + x%a[imin] > x//a[ibest]*b[jbest] + x%a[ibest]:
        jbest = j
        ibest = imin
 
if f == 0:
    pass
elif x//a[ibest]*b[jbest] + x%a[ibest] < x:
    print(x)
    print(-1, -1)
 
else:
    print(x//a[ibest]*b[jbest]+(x%a[ibest]))
    print(ibest+1, jbest+1)
Торговля акциями
В настоящее время на бирже при торговле акциями активно применяются компьютерные системы, которые упрощают и автоматизируют процесс покупки и продажи акций. Некоторые из них даже позволяют вести торговлю вообще без участия человека.

Разумеется, основным критерием, по которому такие системы оцениваются, является прибыль, которую приносит торговля с их применением. Для того чтобы её повысить, при построении этих систем применяются различные математические методы и модели.

Основной трудностью при создании таких систем является то, что они должны некоторым образом учитывать изменение стоимости акций в будущем, а также его прогнозировать. Ваша задача несколько проще — курсы продажи и покупки акций за весь период из N дней уже известны, необходимо лишь разработать оптимальную стратегию продаж и покупок. При этом для простоты будем считать, что за эти N дней купить акции можно не более одного раза и продать акции можно также не более одного раза.

Кроме этого, будем считать, что продажа и покупка будет осуществляться только с акциями одного типа. На начало этого периода вы располагаете суммой в X рублей. Для каждого из дней известна цена ai (от ask — цена предложения), по которой можно купить одну акцию, и цена bi, по которой можно одну акцию продать. При этом в соответствии с действующими правилами торгов на бирже разрешается продавать и покупать только целое число акций (например, если у вас есть 5 рублей, а акция стоит 2 рубля, то вы можете купить не более двух акций). Требуется написать программу, которая по имеющимся данным о стоимости акций в каждый из дней, найдёт оптимальную стратегию покупки и продажи акций.

Входные данные

Первая строка содержит целые числа N и X (1 ≤ N ≤ 100 000,1 ≤ X ≤ 106). Вторая строка содержит N целых чисел a1, ..., aN. Третья строка содержит N целых чисел b1, ..., bN(1 ≤ bi ≤ ai ≤ 1 000).

Выходные данные

В первой строке выведите максимальную сумму, которой вы можете обладать по окончании рассматриваемого периода. Во второй строке выведите два числа — номер дня d1, в который следует купить акции, и номер дня d2, в который эти акции следует продать (должно выполняться неравенство d2 > d1). При этом подразумевается, что покупается столько акций, сколько их можно купить на X рублей, а потом они все продаются. Если в найденной вами стратегии продавать и покупать акции не требуется, то выведите во второй строке "−1 −1". Если существует несколько вариантов оптимальной стратегии, то выведите любой из них.

входные данные
5 1000
2 3 1 4 3
1 2 1 2 3
выходные данные
3000
3 5
входные данные
5 1000
10 9 8 7 6
9 8 7 6 5
выходные данные
1000
-1 -1
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.08.2021, 10:46
Ответы с готовыми решениями:

Торговля акциями
Торговля акциями В настоящее время на бирже при торговле акциями активно применяются компьютерные системы, которые упрощают и...

Торговля акциями
В настоящее время на бирже при торговле акциями активно применяются компьютерные системы, которые упрощают и автоматизируют процесс покупки...

Торговля акциями
Условие В настоящее время на бирже при торговле акциями активно применяются компьютерные системы, которые упрощают и автоматизируют...

5
 Аватар для avdivo
303 / 213 / 112
Регистрация: 03.12.2016
Сообщений: 409
09.08.2021, 16:38
Kirillon_YT,
Возможно, что продать можно и в день покупки, в условии это не запрещено.
Тогда ваш код не правильно считает:

3 100
2 3 1
1 2 3

показывает:

150
1 3

Вот мой код, проверьте его

Python
1
2
3
4
5
6
7
8
9
10
11
12
n,x = map(int, input().split())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
 
res = (x, -2, -2)
for i, v in enumerate(a):
    slice = b[i:]
    max_sale = max(slice)
    tmp = (x // v) * max_sale + (x % v)
    res = (tmp, i, i + slice.index(max_sale)) if tmp > res[0] else res
print(res[0])
print(res[1]+1, res[2]+1)
0
0 / 0 / 0
Регистрация: 06.01.2019
Сообщений: 17
09.08.2021, 17:53  [ТС]
Там в условии написано что должно соблюдаться неравенство d2>d1 где d1 день покупки d2 день продажи
0
 Аватар для avdivo
303 / 213 / 112
Регистрация: 03.12.2016
Сообщений: 409
09.08.2021, 18:09
Да, есть такое, пропустил. Что же у вас не работает?
0
0 / 0 / 0
Регистрация: 06.01.2019
Сообщений: 17
09.08.2021, 20:25  [ТС]
Как я понял ошибка где-то при проверке что меньше суммы, с помощью expect try

Добавлено через 29 секунд
А так там 96/100 баллов
0
 Аватар для avdivo
303 / 213 / 112
Регистрация: 03.12.2016
Сообщений: 409
10.08.2021, 02:11
Kirillon_YT,
У вас ошибка возникает когда минимальный элемент оказывается последним в первом списке.

Вот оптимизированный код. Выполняется в разы быстрее и ошибок я не нашел. Попробуйте.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
n,x = map(int, input().split())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
 
res = (x, -2, -2)
i = len(a)
while i > 1:
    i_old, i = i, a.index(min(a[:i-1]))
    _max = b.index(max(b[i+1:i_old]), i+1, i_old) if i+1 != i_old else i_old
    tmp = (x // a[i]) * b[_max] + (x % a[i])
    res = (tmp, i, _max) if tmp > res[0] else res
print(res[0])
print(res[1] + 1, res[2] + 1)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.08.2021, 02:11
Помогаю со студенческими работами здесь

Задача "Торговля акциями"
Её условие звучит так: В настоящее время на бирже при торговле акциями активно применяются компьютерные системы, которые упрощают и...

Ребята где здесь ошибка
В архиве находится текстовый файл и код на си не хочет открыть файл не могу понять где ошибка

Где у меня ошибка
Подскажите, где у меня ошибка??не пойму пишет, или нужна скобка или где какой то знак? ЕСЛИ(x&lt;2,5; 29*(C30*C30*C30*C30)-корень...

Где у меня ошибка?
Скажите пожалуйста где у меня ошибка? Мне нужно, чтобы правильно выдавало сколько было снято из банкомата. А мне выдает, только последнее...

Где у меня ошибка?
помогите, в чем ошибка? .... 1 : print &quot;cколько всего материков?&quot; input a$ if a$=&quot;6&quot; then print &quot;правильно&quot; else print...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru