Приведен фрагмент программы ** паскале: readln(a); b:=30;a=-a-3*b; if a<b then...

0 голосов
44 просмотров

Приведен фрагмент программы на паскале:
readln(a);
b:=30;
a=-a-3*b;
if aelse
c:=b-50;
При каком наибольшем числе а после выполнения программы с будет равно -20?

С решением, пожалуйста


Информатика (125 баллов) | 44 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Код программы
var
    a: integer;

function c(a: integer): integer;
var
    b: integer;
begin
    b := 30;
    a := -a - 3 * b;
   
    if a < b then
        c := b + 45
    else
        c := b - 50;
end;

begin
    for a := 1000 downto -1000 do
        if c(a) = -20 then begin
            writeln('a=', a, ' c(a)=', c(a));
            break;
        end;
end.

Вывод
a=-120 c(a)=-20

Аналитическое решение.
Видно что c:=b - 50 = 30 - 50 = -20 при a>=b
-a-3*b>=b
-a-3*30>=30
-a-90>=30
-a>=120
a<=-120</span>

(53.1k баллов)