Ctrl K

Два дня обменника

Средняя
У вас есть 1.0 единицы валюты home. Обменник работает два дня, и курсы в эти дни разные. В первый день действуют пары day1_pairs с курсами day1_rates: пара [a, b] с курсом r означает, что одну единицу a можно обменять на r единиц b. Обмен работает и в обратную сторону: одна единица b превращается в 1 / r единиц a. Второй день устроен так же — с day2_pairs и day2_rates. Сначала вы делаете сколько угодно обменов (в том числе ни одного) по курсам первого дня, затем — сколько угодно обменов по курсам второго. Верните наибольшее количество валюты home, которое может оказаться у вас в конце. Внутри одного дня курсы согласованы: циклов обмена нет, и пара валют встречается не больше одного раза. Ответ сравнивается с точностью до 10⁻⁶.
Пример 1
home="KZT", day1_pairs=[["KZT", "USD"], ["USD", "EUR"]], day1_rates=[2.0, 4.0], day2_pairs=[["EUR", "GBP"], ["GBP", "KZT"]], day2_rates=[3.0, 5.0] → 120.0

В первый день: 1 KZT → 2 USD → 8 EUR. Во второй: 8 EUR → 24 GBP → 120 KZT.

Пример 2
home="CHF", day1_pairs=[["CHF", "SEK"]], day1_rates=[8.0], day2_pairs=[["CHF", "SEK"]], day2_rates=[2.0] → 4.0

Меняем франк на 8 крон в первый день, а во второй обмениваем их обратно по курсу 1/2: получается 4 франка.

Пример 3
home="BRL", day1_pairs=[["BRL", "MXN"]], day1_rates=[3.0], day2_pairs=[["MXN", "INR"]], day2_rates=[4.0] → 1.0

Во второй день вернуться в реалы невозможно, поэтому выгоднее ничего не менять и остаться с 1.0.

Ограничения
  • Коды валют — от 1 до 3 заглавных латинских букв
  • 1 ≤ len(day1_pairs), len(day2_pairs) ≤ 10
  • len(day1_rates) == len(day1_pairs), len(day2_rates) == len(day2_pairs)
  • 1.0 ≤ курс ≤ 10.0
  • В графе обменов каждого дня нет циклов
  • Ответ не превышает 5·10¹⁰
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЦепочки отношений СредняяРаскрыть шаблон с переменными СредняяПорядок букв по словарю СложнаяШарик и лунка СложнаяКратчайший путь катящегося шарика Средняя
загружаем Python…
Вход
home="KZT", day1_pairs=[["KZT", "USD"], ["USD", "EUR"]], day1_rates=[2.0, 4.0], day2_pairs=[["EUR", "GBP"], ["GBP", "KZT"]], day2_rates=[3.0, 5.0]
Ожидается
120.0

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 6 тестов на сервере, включая скрытые.