Просто умножай каждое число на 2
32 64 128 256 512 1024 и так далее
N =28.
Рассуждаем так. Начинаем с конца алгоритма.
В последнем цикле по его завершении N=0 , т.к. j в итоге равно 6, значит цикл проработал 6 раз. Соответственно N 6 раз уменьшали на а. Произведём обратную операцию, т.е. увеличим 0 на 3 6 раз. Получается N=18.
Аналогично действуем с первым циклом. i=2, значит цикл работал 2 раза. Значит N увеличиваем на b 2 раза. Т.е. 18 увеличиваем на 5+5. Итого N=28
Рассмотрим простейшую схему кредитования (и самую невыгодную для заёмщика), когда за каждый год отдается фиксированный процент 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) с округлением до целых в большую сторону.
<em>// PascalABC.NET 3.3, сборка 1583 от 25.11.2017</em>
<em>// Внимание! Если программа не работает, обновите версию!</em>
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.
<u>Пример</u>
Сумма кредита и процент годовых:10 0000 16
Предполагаемый годовой доход: 24000
Количество лет на погашение кредита: 12
Var a, b, c, d, h, i:integer;
begin
read (h);
write (1200*9.8*h);
end.
P.S. Благодарность не помешает.
Во вложении - рабочая книга MS Excel 2003 с двумя листами. На каждом - по задаче. Коды находятся в соответствующих листах.