e-olymp 634. Вклад «Антикризисный»

Задача

Постоянные клиенты одного очень крупного банка (ООКБ) недавно получили возможность открыть новый вклад — «Антикризисный». Этот вклад отличается непростой схемой начисления процентов, поэтому вам, как единственному сотруднику ИТ-отдела банка, было поручено написание программы, которая будет вычислять сумму вклада с начисленными процентами.

Вклад «Антикризисный» может быть открыт на любой срок, но дата окончания вклада должна быть не позже $31$ декабря $2009$ года, процентная ставка по вкладу составляет $p$ процентов годовых. Это означает, что если в начале некоторого периода в $d$ дней, в течение которого сумма вклада не менялась, сумма вклада составляла $x$ рублей, то по окончании этого периода она будет составлять $x\cdot\left(1+\frac{p}{100}\cdot\frac{d}{365}\right)$.

Начисление процентов на вклад осуществляется ежемесячно, в последний день месяца (или в последний день действия вклада), при этом сумма процентов присоединяется ко вкладу. Таким образом, если на первое мая сумма вклада составляла $x$ рублей, то $31$ мая ко вкладу будет присоединено $x\cdot\left(\frac{p}{100}\right)\cdot\left(\frac{31}{365}\right)$ рублей, и на первое июня сумма вклада составит $x\cdot\left(1+\left(\frac{p}{100}\right)\cdot\left(\frac{31}{365}\right)\right)$, а в июне проценты будут начисляться уже на эту сумму.

Если же последний день вклада был $20$ мая, то в этот день ко вкладу будет присоединено $x\cdot\left(\frac{p}{100}\right)\cdot\left(\frac{20}{365}\right)$ рублей, а сумма вклада, которую получит клиент банка составит $x\cdot\left(1+\left(\frac{p}{100}\right)\cdot\left(\frac{20}{365}\right)\right)$. Аналогично выполняются расчеты и для случая, когда вклад был открыт не в первый день месяца. Так, например, если вклад был открыт $18$ февраля, то $28$ февраля к сумме вклада будет присоединено $x\cdot\left(\frac{p}{100}\right)\cdot\left(\frac{11}{365}\right)$ рублей, а если же он был открыт $28$ февраля, то в тот же день $28$ февраля к сумме будет присоединено $x\cdot\left(\frac{p}{100}\right)\cdot\left(\frac{1}{365}\right)$ рублей.

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

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

Первая строка входного файла содержит три целых числа: исходную сумму вклада $x$, процентную ставку $p$ и длительность вклада $d \left(1 ≤ x ≤ 100000, 1 ≤ p ≤ 200, 1 ≤ d ≤ 365\right)$. Вторая строка входного файла содержит дату открытия вклада в формате «день-месяц-год». День и месяц обозначаются числами, при этом у чисел, меньших десяти, присутствуют ведущие нули. Гарантируется,что вклад открыт в $2009$ году, и дата его окончания также находится в $2009$ году.

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

В выходной файл выведите ответ на задачу c точностью $6$ знаков после десятичной точки.

Тесты

# Входные данные Выходные данные
1 1000 10 27
18-07-2009
1007.410921
2 1000 12 70
29-06-2009
1023.172779
3 1000 12 37
17-08-2009
1012.200053
4 1000 15 37
21-10-2009
1015.253781
5 1000 15 85
12-08-2009
1035.351224

Код

Решение задачи

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

Ссылки

Условие задачи на e-olymp
Код решения на ideone

Related Images:

Mif 12

Условие задачи:

Банк предлагает три вида депозитов на 3 месяца (p_3% годовых), на 6 месяцев (p_6% годовых) и на 12 месяцев (p_{12}% годовых). Какой депозит принесёт больше дохода при многолетнем вложении.

Алгоритм решения:

Для решения данной задачи нужно использовать формулу вычисления сложных процентов: [latex]{(1+\frac{p}{100\%})}^n[/latex], где [latex]p-[/latex]процентная ставка за расчетный период, а [latex]n-[/latex]количество расчетных периодов. Для депозита на [latex]3[/latex] месяца получаем формулу [latex]{(1+\frac{p_3}{4\times100\%})}^4[/latex], для депозита на [latex]6[/latex] месяцев получаем формулу [latex]{(1+\frac{p_6}{2\times100\%})}^2[/latex], для депозита на [latex]12[/latex] месяцев получаем формулу [latex](1+\frac{p_{12}}{100\%})[/latex]. Программа будет сравнивать полученные результаты и выводить максимальный.

Код программы:

Тесты:

Входные данные Выходные данные Входные данные Выходные данные
Срок вклада Ставка(%) Прибыль Выгода Срок вклада Ставка(%) Прибыль Выгода
 3 месяца  1  1.01004   3 месяца  10  1.10381
 6 месяцев  10  1.1025  6 месяцев  20  1.21
 12 месяцев  30  1.3  На 12 месяцев  12 месяцев  30  1.3  На 12 месяцев

 

Входные данные Выходные данные Входные данные Выходные данные
Срок вклада Ставка(%) Прибыль Выгода Срок вклада Ставка(%) Прибыль Выгода
 3 месяца  4  1.0406  На 3 месяца   3 месяца  1  1.01004
 6 месяцев  4  1.0404  6 месяцев  38  1.4161  На 6 месяцев
 12 месяцев  4  1.04  12 месяцев  9  1.09

 

Входные данные Выходные данные Входные данные Выходные данные
Срок вклада Ставка(%) Прибыль Выгода Срок вклада Ставка(%) Прибыль Выгода
 3 месяца  1  1.01004   3 месяца  11  1.11462
 6 месяцев  20  1.21  6 месяцев  5  1.05062
 12 месяцев  25  1.25  На 12 месяцев  12 месяцев 17  1.17  На 12 месяцев

Рассмотрим работу данной программы на реальных предложениях этого банка для депозитов «Плюс срочный» и «Стандарт срочный».

 Плюс срочный Входные данные Выходные данные  Стандарт срочный Входные данные Выходные данные
Срок вклада Ставка(%) Прибыль Выгода Срок вклада Ставка(%) Прибыль Выгода
 3 месяца  23.5  1.25653   3 месяца  22.5  1.24471
 6 месяцев  24.5  1.26001  На 6 месяцев  6 месяцев  23.5  1.24881  На 6 месяцев
 12 месяцев  25.5  1.255  12 месяцев 24.5   1.245

В результате получили, что эти оба депозита выгодны при сроке вклада на [latex]6[/latex] месяцев. По тестам видно, что депозит «Плюс срочный» при вкладе на  [latex]6[/latex] месяцев приносит большую прибыль, чем депозит «Стандарт срочный». Посчитаем, на сколько первый депозит выгоднее второго, для этого воспользуемся формулой: разница[latex]=[/latex](первый депозит[latex]-[/latex]второй депозит)[latex]\div[/latex]второй депозит[latex]\times{100\%}[/latex]. Подставив значения, получим  — на [latex]\approx0.89685\%[/latex].


Здесь
можно посмотреть решение задачи на ideone.com

Related Images: