Задача Ю3.5. Коммерция. Предприниматель, начав дело, взял кредит размером [latex]k[/latex] рублей, под [latex]p[/latex] процентов годовых и вложил его в своё дело. По прогнозам, его дело должно давать прибыль [latex]r[/latex] рублей в год. Сможет ли он накопить сумму, достаточную для погашения кредита, и если да, то через сколько лет?
[latex]k[/latex] | [latex]p[/latex] | [latex]r[/latex] | [latex]n[/latex] | Комментарий. |
1800 | 50 | 1000 | — | Кредит не будет погашен. |
800000 | 15 | 40000 | — | Кредит не будет погашен. |
1000 | 5 | 400 | 3 | Тест пройден. |
1500 | 3,5 | 400 | 5 | Тест пройден. |
Код программы (C++):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#include <stdio.h> #include <math.h> int main() { double p; // Для процентов определён тип дробных чисел. int k, n, r; // Для количества денег и лет определяем целочисленные значения. scanf ("%d %lf %d", &k, &p, &r); // Ввод данных с клавиатуры. for (n=1; (n*r)<(k*pow(1+(p/100), n)); n++) { if (k*pow(1+p/100, n)-k>=r) { puts ("You can't pay back a loan.\n"); return 0; } } printf ("%d\n", n); return 0; } |
Java:
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 |
import java.util.*; import java.lang.*; import java.io.*; class Ideone { public static void main (String[] args) throws java.lang.Exception { double p, n=1.0, r; int k; boolean f=false; Scanner in = new Scanner (System.in); k=in.nextInt(); p=in.nextDouble(); r=in.nextDouble(); for (; (n*r)<(k*Math.pow(1+(p/100), n)); n++) { if (k*Math.pow(1+p/100, n)-k>=r) { System.out.println ("You can't pay back a loan."); f=true; break; } } if (f==false) { System.out.format ("%d%n", (int)n); } } } |
По условию задачи необходимо определить, сможет ли должник накопить сумму, достаточную для погашения кредита, и если да, то через сколько лет.
Изначально запускается цикл, который основан на сравнении дохода за несколько лет [latex]nr[/latex] и размера кредита, которого он достигнет за эти годы (вычисляется по формуле сложных процентов: [latex]k(1+\frac{p}{100})^{n}[/latex]).
Затем программа проверяет, как возрастают доходы и долг за год. Если скорость роста доходов не превышает скорость роста долга, то программа выдаёт ошибку, или «кредит не будет погашен», после чего возвращается 0 и программа считается успешно завершённой. В противном случае цикл повторяется, а по его окончании на экран выводится количество лет, за которые долг можно будет погасить.
Проверить код можно здесь (C++) и здесь (Java).