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




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

Факториалом натурального числа n (обозначается n!) называется произведение всех натуральных чисел от 1 до n. Например, 4! = 1 · 2 · 3 · 4 = 24.

Дано целое положительное число A.

Необходимо вывести минимальное натуральное число K, для которого 1! + 2! + … + K! > A.

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

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

 

 

БейсикPython

DIM A, K, F, S AS INTEGER

INPUT A

K = 1

F = 1

S = 0

WHILE F <= A

    K = K + 1

    F = F * K

    S = S + F

WEND

PRINT K

END

a = int(input())

    k = 1

    f = 1

    s = 0

while f <= a:

    k += 1

    f *= k

    s += f

print(k)

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

var a, k, f, s: integer;

begin

    read(a);

    k := 1;

    f := 1;

    s := 0;

    while f <= a do begin

        k := k + 1;

        f := f * k;

        s := s + f

    end;

    writeln(k)

end.

алг

нач

    цел a, k, f, s

    ввод a

    k := 1

    f := 1

    s := 0

    нц пока f <= a

        k := k + 1

        f := f * k

        s := s + f

    кц

    вывод k

кон

С++

#include <iostream>

using namespace std;

int main(){

    int a, k, f, s;

    cin >> a;

    k = 1;

    f = 1;

    s = 0;

    while (f <= a) {

        ++k;

        f *= k;

        s += f;

    }

    cout << k;

    return 0;

}

 

 

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

1. Напишите, что выведет эта программа при вводе A = 8.

2. Назовите минимальное A, большее 10, при котором программа выведет неверный ответ.

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

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

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

Решение.

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

2. Минимальное при котором программа выдаёт неверный ответ, равно 24. Программа выдаёт неверный ответ 5. При вводе чисел от 11 до 23 программа выдаёт верный ответ 4.

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

1) Неверная инициализация. Значения переменных S и K не согласованы: эти переменные могут быть равны 1 или 0, но они должны быть одинаковы. В результате этой ошибки текущее значение суммы всегда оказывается на 1 меньше правильного.

2) Неверное условие цикла. Вместо суммы факториалов с заданным числом сравнивается последний вычисленный факториал.

 

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

 

Первая ошибка, способ 1:

k := 1;

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

k := 0;

 

Первая ошибка, способ 2:

s := 0;

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

s := 1;

 

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

while f <= a do begin

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

while s <= a do begin

 

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

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