Задания
Версия для печати и копирования в MS Word

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

 

Си++Python

#include <iostream>

using namespace std;

int main() {

    int s, n;

    cin >> s;

    s = s / 10;

    n = 1 ;

    while (s < 51) {

        s = s + 5;

        n = n * 2;

    }

    cout << n << endl;

    return 0;

}

s = int(input())

s = s // 10

n = 1

while s < 51:

    s = s + 5

    n = n * 2

print(n)

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

var s, n: integer;

begin

    readln (s);

    s := s div 10;

    n := 1;

    while s < 51 do

    begin

        s := s + 5;

        n := n * 2

    end;

    writeln(n)

end.

алг

нач

    цел n, s

    ввод s

    s := div( s, 10)

    n := 1

    нц пока s < 51

        s := s + 5

        n := n * 2

    кц

    вывод n

кон

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

Ре­ше­ние.

За­ме­тим, что число 64 это 2 в ше­стой сте­пе­ни. Зна­чит, цикл дол­жен вы­пол­нить­ся 6 раз. Мак­си­маль­ное число, при ко­то­ром цикл вы­пол­нит­ся по­след­ний раз  — 50. А сле­ду­ю­щий шаг  — 55 уже не прой­дет. Тогда ответ  — 55 − 5 · 6  =  25. А так как на пер­вом шаге бе­рет­ся целое от де­ле­ния на 10, то тре­тью цифру нужно взять мак­си­маль­но воз­мож­ную  — 9.

 

 

Ответ: 259.

 

При­ме­ча­ние.

Тре­бу­ет­ся опре­де­лить наи­боль­шее число, при ко­то­ром про­грам­ма вы­ве­дет 64. Число 210, при ко­то­ром про­грам­ма тоже вы­ве­дет 64, не под­хо­дит, по­сколь­ку оно мень­ше 259.

 

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

for i in range(10000, 1, -1):

s = i

s = s // 10

n = 1

while s < 51:

s = s + 5

n = n * 2

if n == 64:

print(i)

break

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