Версия для копирования в MS Word
PDF-версии: горизонтальная · вертикальная · крупный шрифт · с большим полем
РЕШУ ЕГЭ — информатика
Задания
i

Фак­то­ри­а­лом на­ту­раль­но­го числа 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

    K = K + 1

    F = F * K

WEND

IF F − A > 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:

    k += 1

    f *= k

if f − a > a − f // k:

    f //= k

    k −= 1

print(k)

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

var a, k, f: integer;

begin

    read(a);

    k := 0;

    f := 1;

    while f <= a do begin

        k := k + 1;

        f := f * k

    end;

    if f−a > 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

        k := k + 1

        f := f * k

    кц

    если f − a > 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) {

        ++k;

        f *= k;

    }

    if (f − a > a − f/k) {

        f = f/k;

        −−k;

    }

    cout << k;

    return 0;

}

 

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

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

2.  При­ве­ди­те при­мер числа A, при ко­то­ром про­грам­ма вы­ве­дет вер­ный ответ. Ука­жи­те этот ответ.

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

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

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