Вход
Быстрая регистрация
Если вы у нас впервые: О проекте FAQ
0

Задача. Какова оптимальная стратегия Джека на валютной бирже?

FEBUS [1.6K] 3 года назад

На валютной бирже острова Голд продают динары (D), гульдены (G), реалы (R) и талеры (T). Каждый желающий имеет право совершить сделку купли-продажи с любой парой валют не более одного раза за день.

Курсы валют такие:

D = 6G, D = 25R, D = 120T, G = 4R, G = 21T, R = 5T.

Например, запись D = 6G означает, что на динар можно купить 6 гульденов (или 6 гульденов — поменять на один динар).

Утром у Джека было 32 динара, 192 гульдена, 160 реалов и 800 талеров.

Сколько максимально может быть у Джека вечером

(а) динаров ?

(b) талеров ?

P.S. Подобная задача была на Соросовской олимпиаде (90-е годы).

Mefody66 [29.3K]
В случаях а и б он должен менять валюту по-разному? То есть, если менять вот так, получится максимум динаров, а если эдак, то максимум талеров?
Или надо найти оптимальный способ, при котором будет наибольшее количество и динаров и талеров?
 3 года назад
FEBUS [1.6K]
Да, это два варианта задачи. Конечно, по разному.  3 года назад
комментировать
2

Я буду для краткости писать названия валют 1 буквой по-русски. Д, Г, Р, Т.

А) меняем Г на Д. Напрямую я за 6Г получу 1Д.

Через Р я за 6Г получу 24Р, а за 1Д нужно 25Р. Не подходит.

Через Т я за 6Г получу 6*21=126Т, а за 1Д нужно 120Т. Это выгоднее, чем напрямую.

Гульдены нужно обменять на талеры, а потом на динары.

Меняем Р на Д. Напрямую я за 25Р получу 1Д.

Через Г я за 25Р получу 25/4=6Г+1Р, а 1Д стоит 6Г. Это выгоднее, чем напрямую.

Через Т я за 25Р получу 5*25=125Т, а 1Д стоит 120Т, остаётся 5Т=1Р.

Значит, менять через Т или через Р одинаково выгодно.

Поэтому можно всё менять через Талеры.

192Г=192*21=4032Т. 160Р=160*5=800Т.

Получаем 4032+800+800=5632Т=46*120+112Т= 46Д+112Т.

Всего 46+32=78Д и 112Т.

У нас не хватило всего 8Т для ещё 1Д. Поэтому имеет смысл обменять 2Д на 2*6=12Г, их на 12*21=252Т, а потом 252+112=364Т обратно на 3Д.

Получаем 79Д и 4Т. Теперь меняем 79Д опять через Г на Т (1Д=6Г=126Т) и получаем

79*126+4=9958Т=9958/120=82Д+118Т.

И дальше можно так менять и повышать количество денег неограниченно.

Б) Тоже самое с талерами - меняем их на динары напрямую за 120, а потом через гульдены обратно на талеры по 126. Сумма растёт неограниченно.

система выбрала этот ответ лучшим
FEBUS [1.6K]
Вы, очевидно, не очень внимательно прочитали задачу.
"Каждый ... имеет право совершить сделку купли-продажи с любой парой валют не более одного раза за день".
 3 года назад
Mefody66 [29.3K]
Да, этот момент я упустил.
Значит, можно поменять по одному разу любую валюту на любую?
Или вообще совершить только одну сделку за день?
 3 года назад
FEBUS [1.6K]
Условие написано четко. Я устал.  3 года назад
Mefody66 [29.3K]
Я понял. Нужно ещё и порядок обменов продумать.  3 года назад
комментировать
1

Попробую еще раз.

Я буду для краткости писать названия валют 1 буквой по-русски. Д, Г, Р, Т.

За 1 день можно произвести по 1 из каждых обменов: Д и Г, Д и Р, Д и Т, Г и Р, Г и Т, Р и Т.

1) Меняем Г на Д. Напрямую я за 6Г получу 1Д.

Через Р я за 6Г получу 24Р, а за 1Д нужно 25Р. Не подходит.

Через Т я за 6Г получу 6*21=126Т, а за 1Д нужно 120Т. Это выгоднее, чем напрямую.

2) Меняем Р на Д. Напрямую я за 25Р получу 1Д.

Через Г я за 25Р получу 25/4=6Г+1Р, а 1Д стоит 6Г. Это выгоднее, чем напрямую.

Через Т я за 25Р получу 5*25=125Т, а 1Д стоит 120Т, остаётся 5Т=1Р.

А) Нам нужно получить максимум Динаров.

У нас есть 32Д. Можно их обменять на 6*32 = 192Г, потом 192Г на 192*21=4032Т. За них мы получим 4032/120=33Д+72Т.

Еще у нас есть 160Р и 800Т. 160Р можно обменять на 160*5=800Т. А можно на 160/4=40Г, а их потом на 40*21=840Т.

Второе выгоднее. В итоге делаем так:

1) меняем Динары на Гульдены (32Д = 192Г)

2) меняем Реалы на Гульдены (160Р = 40Г)

3) все Гульдены меняем на Талеры (192+192+40 = 424Г = 424*21 = 8904Т)

4) меняем все Талеры обратно на Динары (8904+800 = 9704Т = 9704/120 = 80Д + 104Т)

Получаем максимально 80 Динаров.

Б) Нам нужно получить максимум Талеров. Выгоднее всего получать их из Гульденов, 1Г = 21Т.

1) Меняем Талеры на Реалы (800Т = 160Р)

2) меняем Динары на Гульдены (32Д = 192Г)

3) меняем Реалы на Гульдены (160+160Р = 320Р = 80Г)

4) все Гульдены меняем на Талеры (192+192+80 = 464Г = 464*21 = 9744Т)

Получаем максимально 9744 Талера.

FEBUS [1.6K]
Увы. Это не максимумы.  3 года назад
Mefody66 [29.3K]
Ну я и не сомневался, что ошибусь. Задача действительно сложная.
Подскажите - обмен 1Д = 25Р используется в ответе или нет?
По моим расчетам, он невыгоден ни для получения динаров, ни для получения талеров.
Поэтому я обошелся без него.
 3 года назад
FEBUS [1.6K]
Да, все 6 пар участвуют. Сложная. Я не помню, чтобы кто-то её решил на Соровской олимпиаде, даже из жюри. Но, там по-моему была еще заковырестей.
Картинку нарусуйте, на ней видны все "выгодные" обмены.
 3 года назад
Mefody66 [29.3K]
А вы сами знаете решение? Откуда? Сами решили или подсказал кто?  3 года назад
комментировать
1

Обозначим

GD = G → D — операция обмена гульденов на динары.

TRD = T → R → D — операции обмена талеров на реалы, затем реалов на динары.

Оптимальные стратегии таковы :

(а) на динары : GD, TR, DRGTD. Вечером у Джека D = 84.

(b) на талеры : GD, RT, TDRGT. Вечером у Джека T = 10150.

Знаете ответ?
Есть интересный вопрос? Задайте его нашему сообществу, у нас наверняка найдется ответ!
Делитесь опытом и знаниями, зарабатывайте награды и репутацию, заводите новых интересных друзей!
Задавайте интересные вопросы, давайте качественные ответы и зарабатывайте деньги. Подробнее..
регистрация
OpenID