Программное решение задач ЕГЭ по информатике

Задача 5922. Источник: Поляков. Задание КИМ 16

Страница задачи 5922

(Е. Джобс) Алгоритм вычисления функции F(n), где n – неотрицательное число, задан следующими соотношениями:

F(n) = n, при n ≤ 10
F(n) = 1, при n ≥ 10000
F(n) = n % 10 + F(n+2), при 10 < n < 10000 и четном n,
F(n) = F(n–2) – (n–1) % 10, при 10 < n < 10000 и нечетном n.

Чему равно значение выражения F(4500) + F(5515)? В ответе запишите только целое число. Примечание: операция a % b находит остаток от деления числа a на число b.

Решение

В данной задаче четные элементы зависят от следующего четного элемента, а нечетные элементы зависят от предыдущего нечетного элемента. Поэтому для каждой формулы делаем свой цикл для вычисления, занося результаты в список или массив.

Python

f = [1] * 10001
for n in range(11):
    f[n] = n
for n in range(9998, 11, -2):
    f[n] = n % 10 + f[n + 2]
for n in range(11, 5516, 2):
    f[n] = f[n - 2] - (n - 1) % 10
print(f[4500] + f[5515])

PascalABC

var
    n: Integer;
    f: array[0..10000] of Integer;
begin
    f[10000] := 1;
    for n := 0 to 10 do
        f[n] := n;
    for n := 9998 downto 12 do
        if n mod 2 = 0 then
            f[n] := n mod 10 + f[n + 2];
    for n := 11 to 5515 do
        if n mod 2 = 1 then
            f[n] := f[n - 2] - (n - 1) mod 10;
    Writeln(f[4500] + f[5515]);
end.

C++

#include <iostream>
using namespace std;
int main()
{
    int f[10001];
    f[10000] = 1;
    for (int n = 0; n < 11; n++)
        f[n] = n;
    for (int n = 9998; n > 11; n -= 2)
        f[n] = n % 10 + f[n + 2];
    for (int n = 11; n < 5516; n += 2)
        f[n] = f[n - 2] - (n - 1) % 10;
    cout << f[4500] + f[5515];
}

Ответ

4

Отправить замечание по решению

Код по которому имеется замечание:

Ваш вариант кода:

Комментарий: