Рассмотрим простейшую схему кредитования (и самую невыгодную для заёмщика), когда за каждый год отдается фиксированный процент p от первоначальной суммы кредита k без учета того, что часть кредита уже погашена за предыдущие годы. В этом случае ежегодная сумма процентов по кредиту составит Sk=k×p%/100%. За n лет будет отдано n×Sk. И еще нужно вернуть саму сумму кредита k. Итого нужно вернуть k+n×Sk. Доход за это время составит n×r и получаем неравенство n×r ≥ n×Sk+k n×(r-Sk) ≥ k → n ≥ k/(r-Sk) с округлением до целых в большую сторону.
// PascalABC.NET 3.3, сборка 1583 от 25.11.2017 // Внимание! Если программа не работает, обновите версию!
begin var (k,p):=ReadReal2('Сумма кредита и процент годовых:'); var r:=ReadReal('Предполагаемый годовой доход:'); var Sk:=k*p/100; if r<=Sk then Writeln('Рассчитаться за кредит невозможно') else Writeln('Количество лет на погашение кредита: ',Floor(k/(r-Sk))) end.
Пример Сумма кредита и процент годовых:10 0000 16 Предполагаемый годовой доход: 24000 Количество лет на погашение кредита: 12
// PascalABC.NET 3.3, сборка 1583 от 25.11.2017 // Внимание! Если программа не работает, обновите версию!
procedure FillRandom(var P:array of integer; a,b:integer); begin var (k,n):=(0,P.Length); repeat P:=ArrRandom(n,a,b); k+=1; until P.Distinct.Count=n; Writeln('Сделано ',k,' генераций массива') end;
begin var n:=ReadInteger('n='); var (a,b):=ReadInteger2('Укажите интервал значений элементов:'); if b-a+1<n then Writeln('Задание выполнить невозможно') else begin var x:=new integer[n]; FillRandom(x,a,b); x.Println end end.