Задания
Версия для печати и копирования в MS Word
Тип Д6 № 45240
i

Опре­де­ли­те, при каком наи­мень­шем введённом зна­че­нии пе­ре­мен­ной s про­грам­ма вы­ве­дет число 32. Для Ва­ше­го удоб­ства про­грам­ма пред­став­ле­на на четырёх язы­ках про­грам­ми­ро­ва­ния.

 

 

 

Пас­кальPython

var s, n: integer;

begin

    readln (s);

    s := (s − 21) div 10;

    n := 1;

    while s > 0 do

    begin

        n := n * 2;

        s := s − n;

    end;

    writeln(n)

end.

s = int(input())

s = (s − 21) // 10

n = 1

while s > 0:

    n = n * 2

    s = s - n

print(n)

Ал­го­рит­ми­че­ский языкС++

алг

нач

    цел n, s

    ввод s

    s := div( (s − 21), 10)

    n := 1

    нц пока s > 0

        n := n * 2

        s := s − n

    кц

    вывод n

кон

#include <iostream>

using namespace std;

int main() {

    int s, n;

    cin >> s;

    s = (s − 21) / 10;

    n = 1 ;

    while (s > 0) {

        n = n * 2;

        s = s − n;

    }

    cout << n << endl;

    return 0;

}

Спрятать решение

Ре­ше­ние.

Решим за­да­чу с по­мо­щью про­грам­мы ме­то­дом пе­ре­бо­ра. Ниже при­ве­де­на про­грам­ма на языке PascalABC:

var s, n, i: integer;

begin

for i := 1 to 1000 do begin

s := (i - 21) div 10;

n := 1;

while s > 0 do begin

n := n * 2;

s := s - n;

end;

if n = 32 then begin

writeln(i);

break;

end;

end;

end.

После вы­пол­не­ния про­грам­мы по­лу­чим ответ  — 331.

 

Ответ: 331.

 

При­ведём дру­гое ре­ше­ние на языке Python.

for i in range(1, 1000):

s = i

s = (s - 21) // 10

n = 1

while s > 0:

n = n * 2

s = s - n

if n == 32:

print(i)

break

Источник: ЕГЭ по ин­фор­ма­ти­ке 04.04.2022. До­сроч­ная волна