СДАМ ГИА: РЕШУ ЕГЭ
Образовательный портал для подготовки к экзаменам
Информатика
≡ информатика
сайты - меню - вход - новости


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

Дано целое положительное число N, не превосходящее 1000. Необходимо определить, является ли это число степенью числа 3. То есть требуется определить, существует ли такое целое число K, что 3K = N, и вывести это число либо сообщение, что такого числа не существует.

Для решения этой задачи ученик написал программу, но, к сожалению, его программа оказалась неверной. Ниже эта написанная им программа для Вашего удобства приведена на пяти языках программирования.

 

БейсикPython

DIM N, K AS INTEGER

INPUT N

K = 0

WHILE K MOD 3 = 0

    K = K + 1

    N = N \ 3

WEND

IF N > 0 THEN

    PRINT K

ELSE

    PRINT "Не существует"

END IF

END

n = int(input())

k = 0

while k%3 == 0:

    k = k + 1

    n = n // 3

if n > 0:

    print(k)

else:

    print("Не существует")

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

var n, k: integer;

begin

    read(n);

    k := 0;

    while k mod 3 = 0 do begin

        k := k + 1;

        n := n div 3;

    end;

    if n > 0 then

        writeln(k)

    else

        writeln('Не существует')

end.

алг

нач

    цел n, k

    ввод n

    k := 0

    нц пока mod(k, 3)=0

        k := k + 1

        n := div(n,3)

    кц

    если n > 0

        то вывод k

        иначе вывод "Не существует"

    все

кон

Си++

#include <iostream>

using namespace std;

int main(){

    int n, k;

    cin >> n;

    k = 0;

    while (k%3 == 0) {

        k = k + 1;

        n = n / 3;

    }

    if (n > 0)

        cout « k « endl;

    else

        cout << "Не существует";

    return 0;

}

 

Последовательно выполните следующее.

1. Напишите, что выведет эта программа при вводе числа 9.

2. Приведите пример числа, при вводе которого приведённая программа напечатает то, что требуется.

3. Найдите в программе все ошибки (их может быть одна или несколько).

Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.

Достаточно указать ошибки и способ их исправления для одного языка программирования.

Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.

Решение.

1. При вводе числа 9 программа выведет число 1.

2. Примеры чисел, при вводе которых программа выводит корректный ответ: 2, 3. Других чисел нет.

Комментарий для экспертов. После выполнения программы при любом введённом n значение k будет равно 1 (тело цикла выполнится ровно 1 раз).

В результате программа напечатает либо 1 (если n ≥ 3), либо «Не существует» (в противном случае). Таким образом, программа выводит корректный ответ, только если введено 2 или 3. Экзаменуемому достаточно указать любое из этих чисел. Отметим, что при n=1 программа напечатает «Не существует», что неверно (должно быть напечатано «0»).

3. Программа содержит две ошибки:

1) неверное условие цикла;

2) неверное условие при печати результата.

Пример исправления для языка Паскаль:

Первая ошибка:

while k mod 3 = 0 do begin

Исправленная строка:

while n mod 3 = 0 do begin

Вторая ошибка:

if n>0 then

Исправленная строка:

if n=1 then

Пояснение для эксперта

После исправления первой ошибки в результате выполнения цикла значение переменной n будет равно n0/(3k), где n0 — введённое пользователем значение; k — максимальный показатель степени, при котором 3k является делителем числа n0. Число n0 является степенью числа 3, если n0 = 3k, т. е. n0/(3k) = 1.

В программах на других языках ошибочные строки и их исправления аналогичны.

Незначительной опиской, не влияющей на оценку, следует считать отсутствие служебных слов и знаков после содержательной части исправления.

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