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

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

 

Бей­сикPython

DIM S, N AS INTEGER

INPUT X

N = 4

WHILE S < 37

    S = S + 3

    N = N * 2

WEND

PRINT N

s = int(input())

n = 4

while s < 37:

    s = s + 3

    n = n * 2

print(n)

Пас­кальАл­го­рит­ми­че­ский язык

var s, n: integer;

begin

    readln(s);

    n := 4;

    while s < 37 do

    begin

        s := s + 3;

        n := n * 2

    end;

    writeln(n)

end.

алг

нач

    цел n, s

    ввод s

    n := 4

    нц пока s < 37

        s := s + 3

        n := n * 2

    кц

    вывод n

кон

Си++

#include <iostream>

using namespace std;

int main()

{

int s;

cin >> s;

int n = 4;

    while (s < 37) { s = s + 3; n = n * 2; }

    cout << n << endl;

    return 0;

}

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

Ре­ше­ние.

За­ме­тим, что число 128 это 2 в седь­мой сте­пе­ни. Зна­чит, цикл дол­жен вы­пол­нить­ся 5 раз, по­сколь­ку из­на­чаль­но n  =  4. Тогда ответ  — 37 − 3 · 5  =  22.

 

Ответ: 22.

 

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

for i in range(10000):

s = i

n = 4

while s < 37:

s = s + 3

n = n * 2

if n == 128:

print(i)

break

 

При­ве­дем ре­ше­ние Ми­ха­и­ла Глин­ско­го.

Со­ста­вим про­грам­му на языке Пас­каль для пе­ре­бо­ра воз­мож­ных зна­че­ний пе­ре­мен­ной s и вы­пол­не­ния для каж­до­го зна­че­ния за­дан­но­го ал­го­рит­ма. Вы­ве­дем пер­вое зна­че­ние, при ко­то­ром по­лу­чит­ся 128.

var s,i, n: integer;

begin

for i:=1 to 1000 do begin

  s:=i;

  n := 4;

  while s < 37 do begin

    s := s + 3;

    n := n * 2

    end;

  if n=128 then begin writeln(i) break; end;

  end;

end.

Раздел кодификатора ФИПИ: 1.7.2 Ос­нов­ные кон­струк­ции языка про­грам­ми­ро­ва­ния. Си­сте­ма про­грам­ми­ро­ва­ния