Это на вычисление суммы после уплаты налога. если s0 - исходная сумма, а р - процент налога, то ищется s=s0-s0*p/100. окончательная формула: s=s0(1-p/100) const p=13; { налог в процентах } var s0,s: real; begin write('введите сумму '); read(s0); s: =s0*(1-p/100); { а теперь округлим сумму до копеек, т.е. до 0.01 } s: =int(100*(s+0.005))/100; writeln('сумма после вычета налога ',p,'% составит ',s: 0: 2) end. тестовое решение: введите сумму 2000 сумма после вычета налога 13% составит 1740.00 замечание. при целочисленной зарплате и целочисленном проценте налога оператор s: =int(100*(s+0.005))/100; не нужен, поскольку в дробной части всегда будет не больше двух знаков. но, поскольку о сумме зарплаты ничего не говорится, а дано только конкретное значение, которое понято как тестовый пример, было предложено решение с округлением.
elbabitch2014
25.07.2022
Под локальным максимумом, скорее всего, имеется в виду число, большее чем оба его соседа, за исключением случая, когда соседом справа является 0. в таком случае достаточно однократно пройтись по всем числам, запоминая минимальное из расстояний между новым и предыдущим обнаруженными максимумами. программа (язык pascal abc.net) var i1,i2,i3: integer; i: integer; curr,minr,lastmax: integer; begin readln(i1,i2); i: =2; minr: =1000000; repeat readln(i3); if (i2> i1) and (i2> i3) and (i3< > 0) then begin curr: =i-lastmax; if curr< minr then minr: =curr; lastmax: =i; end; i1: =i2; i2: =i3; i+=1; until i2=0; if minr=1000000 then writeln(0) else writeln(minr); {стоило бы добавить булевую переменную в качестве флага - был ли хоть один max, но вряд ли расстояние между ними превысит миллион : -} end.
f(7)=f(6)+2*f(5)
f(6)=1
f(5)=1
f(7)=1+2*1=3.
как-то так, если в твоем условии нету ошибки.