Факториалом натурального числа n (обозначается n!) называется произведение всех натуральных чисел от 1 до n. Например, 4! = 1 · 2 · 3 · 4 = 24.
Дано целое положительное число A. Необходимо найти ближайшее к A число, которое является точным факториалом какого-либо натурального числа. Если два точных факториала одинаково близки к A, нужно выбрать меньший из них. Например, для A = 15 нужно получить ответ 6, а для A = 20 – ответ 24.
Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная.
Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Бейсик | Python
DIM A, K, F AS INTEGER
INPUT A
K = 0
F = 1
WHILE F A − F \ K THEN
F = F \ K
K = K − 1
END IF
PRINT K
END
|
a = int(input())
k = 0
f = 1
while f a − f // k:
f //= k
k −= 1
print(k)
Паскаль | Алгоритмический язык
var a, k, f: integer;
begin
read(a);
k := 0;
f := 1;
while f a − f div k then begin
f := f div k;
k := k − 1;
end;
writeln(k)
end.
|
алг
нач
цел a, k, f
ввод a
k := 0
f := 1
нц пока f a − div(f,k)
то f := div(f,k)
k := k − 1
все
вывод k
кон
С++
#include <iostream>
using namespace std;
int main(){
int a, k, f;
cin >> a;
k = 0;
f = 1;
while (f a − f/k) {
f = f/k;
−−k;
}
cout
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе A = 7.
2. Приведите пример числа A, при котором программа выведет верный ответ. Укажите этот ответ.
3. Найдите в программе все ошибки (известно, что их не больше двух) и исправьте их. Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.
Дано целое положительное число A. Необходимо найти ближайшее к A число, которое является точным факториалом какого-либо натурального числа. Если два точных факториала одинаково близки к A, нужно выбрать меньший из них. Например, для A = 15 нужно получить ответ 6, а для A = 20 – ответ 24.
Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная.
Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Бейсик | Python
DIM A, K, F AS INTEGER
INPUT A
K = 0
F = 1
WHILE F A − F \ K THEN
F = F \ K
K = K − 1
END IF
PRINT K
END
|
a = int(input())
k = 0
f = 1
while f a − f // k:
f //= k
k −= 1
print(k)
Паскаль | Алгоритмический язык
var a, k, f: integer;
begin
read(a);
k := 0;
f := 1;
while f a − f div k then begin
f := f div k;
k := k − 1;
end;
writeln(k)
end.
|
алг
нач
цел a, k, f
ввод a
k := 0
f := 1
нц пока f a − div(f,k)
то f := div(f,k)
k := k − 1
все
вывод k
кон
С++
#include <iostream>
using namespace std;
int main(){
int a, k, f;
cin >> a;
k = 0;
f = 1;
while (f a − f/k) {
f = f/k;
−−k;
}
cout
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе A = 7.
2. Приведите пример числа A, при котором программа выведет верный ответ. Укажите этот ответ.
3. Найдите в программе все ошибки (известно, что их не больше двух) и исправьте их. Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.
💡 Пошаговый разбор и решение:
1. При вводе A = 7 программа выведет число 3.
2. Программа выводит верный ответ при вводе A = 1 (ответ 1), AA = 2 (ответ 2) и A = 3 (ответ 2).
3. Программа содержит две ошибки.
1) Первая ошибка. Ошибочная проверка. По условию при = м удалении A от двух точных факториалов нужно выбрать меньший из них. Для этого нужно строгое сравнение заменить на нестрогое.
2) Ошибочный вывод. Вместо значения факториала F выводится «основание» факториала K.
Пример исправления для языка Паскаль:
Первая ошибка:
if f − a > a − f div k
Исправленная строка:
if f − a >= a − f div k
Допускается использование функции abs (модуль числа). Это ничего не меняет по сути, так как обе части сравнения часть заведомо неотрицательны, но такое использование нельзя считать ошибкой:
if abs(f−a) >= abs(a − f div k)
При использовании функции модуля на алгоритмическом языке следует использовать функцию iabs (модуль для целых чисел):
если iabs(f − a) >= iabs(div(f,k) − a)
Использование в алгоритмическом языке функции abs вместо iabs отмечается как ошибка, но не влияет на оценку работы.
Вторая ошибка:
writeln(k)
Исправленная строка:
writeln(f)
В программах на других языках ошибочные строки и их исправления аналогичны.
Незначительной опиской, не влияющей на оценку, следует считать отсутствие служебных слов и знаков после содержательной части исправления.
2. Программа выводит верный ответ при вводе A = 1 (ответ 1), AA = 2 (ответ 2) и A = 3 (ответ 2).
3. Программа содержит две ошибки.
1) Первая ошибка. Ошибочная проверка. По условию при = м удалении A от двух точных факториалов нужно выбрать меньший из них. Для этого нужно строгое сравнение заменить на нестрогое.
2) Ошибочный вывод. Вместо значения факториала F выводится «основание» факториала K.
Пример исправления для языка Паскаль:
Первая ошибка:
if f − a > a − f div k
Исправленная строка:
if f − a >= a − f div k
Допускается использование функции abs (модуль числа). Это ничего не меняет по сути, так как обе части сравнения часть заведомо неотрицательны, но такое использование нельзя считать ошибкой:
if abs(f−a) >= abs(a − f div k)
При использовании функции модуля на алгоритмическом языке следует использовать функцию iabs (модуль для целых чисел):
если iabs(f − a) >= iabs(div(f,k) − a)
Использование в алгоритмическом языке функции abs вместо iabs отмечается как ошибка, но не влияет на оценку работы.
Вторая ошибка:
writeln(k)
Исправленная строка:
writeln(f)
В программах на других языках ошибочные строки и их исправления аналогичны.
Незначительной опиской, не влияющей на оценку, следует считать отсутствие служебных слов и знаков после содержательной части исправления.
📚 Похожие разобранные задания по предмету:
ID 140504 • Задание №7
Файл winter.jpg был выложен в Интернете по адресу ftp://weather.info/winter.jpg. Потом на сайте создали подкат...
ID 31813 • Задание №12
Дан фрагмент таблицы истинности выражения F:
x1
x2
x3
x4
x5
x6
x7
x8
F
0
0
0
1
1
1
1
1
0
1
0
1
0
1
1
0
0
1
...
Официальные критерии проверки ФИПИ:
Критерии проверки:
Критерии оценивания выполнения задания | Баллы
Выполнены все четыре необходимых действия, и ни одна верная строка не указана в качестве ошибочной | 3
Не выполнены условия, позволяющие поставить 3 балла. Имеет место одна из следующих ситуаций.
1. Выполнены три из четырёх необходимых действий, ни одна верная строка не названа ошибочной.
2. Выполнены все четыре необходимых действия, одна верная строка названа ошибочной. | 2
Не выполнены условия, позволяющие поставить 2 или 3 балла.
Выполнены два из четырёх необходимых действий. | 1
Не выполнены условия, позволяющие поставить 1, 2 или 3 балла. | 0
Максимальный балл | 3
Критерии оценивания выполнения задания | Баллы
Выполнены все четыре необходимых действия, и ни одна верная строка не указана в качестве ошибочной | 3
Не выполнены условия, позволяющие поставить 3 балла. Имеет место одна из следующих ситуаций.
1. Выполнены три из четырёх необходимых действий, ни одна верная строка не названа ошибочной.
2. Выполнены все четыре необходимых действия, одна верная строка названа ошибочной. | 2
Не выполнены условия, позволяющие поставить 2 или 3 балла.
Выполнены два из четырёх необходимых действий. | 1
Не выполнены условия, позволяющие поставить 1, 2 или 3 балла. | 0
Максимальный балл | 3
🔗 Другие задания линии №24 по предмету Информатика:
ID 33959
Текстовый файл состоит не более чем из 106 символов X, Y и Z. Определите максимальное количеств...
ID 33960
Текстовый файл состоит не более чем из 106 символов X, Y и Z. Определите длину самой длинной по...
ID 33961
Текстовый файл состоит не более чем из 106 символов X, Y и Z. Определите максимальную длину цеп...
ID 33962
Текстовый файл состоит не более чем из 106 символов A, B и C. Определите максимальное количеств...
ID 33963
Текстовый файл состоит не более чем из 106 символов A, B и C. Определите максимальное количеств...