ЕГЭ-16. Рекурсивные процедуры и функции

13 задач
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.

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

\(F(n) = F(n - 4) + 3580, \text{ если } n \geq 19;\\ F(n) = 6 \times (G(n - 7) - 36), \text{ если } n < 19;\\ G(n) = n / 20 + 28, \text{ если } n \geq 248\,045;\\ G(n) = G(n + 9) - 4, \text{ если } n < 248\,045.\)

Чему равно значение функции F(673)?

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

F(n) = nn, если n > 450000;
F(n) = 3n + F(n + 14) + 2·F(n + 7), если n ≤ 450000.

Найдите последние 6 цифр значения F(73137).

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

F(n) = nn, если n > 350000;
F(n) = 3n + F(n + 6) + 2·F(n + 3), если n ≤ 350000.

Найдите последние 6 цифр значения F(63636).

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

F(n) = nn, если n > 130000;
F(n) = n + F(n + 4) - F(n + 2), если n ≤ 130000.

Найдите последние 7 цифр значения F(33122).

(О. Лысенков) Алгоритм вычисления значения функции F(n), где n ‐ целое число, задан следующими соотношениями:

F(n) = (n + 1) · n, если | n | < 5;
F(n) = F(n ‐ 5) + 2·n + 2356, если | n | ≥ 5 и n кратно 5;
F(n) = F(n + 5) + 7·n, если | n | ≥ 5 и n не кратно 5.

Определите количество таких целых n, для которых значение F(n) определено и | F(n) | < 132567821562.

Определите наименьшее значение n, при котором сумма чисел, которые будут выведены при вызове F(n), будет больше 5000000. Запишите в ответе сначала найденное значение n, а затем через пробел ‐ соответствующую сумму выведенных чисел.

Python Паскаль C++
def F( n ):
  print(2*n+1)
  if n > 1:
    print(3*n-8)
    F(n-1)
    F(n-4)

 
procedure F
    ( n: integer );
begin
  writeln(2*n+1);
  if n > 1 then begin
    writeln(3*n-8);
    F(n-1);
    F(n-4);
  end;
end;
void F( int n )
{
  cout << 2*n+1 << endl;
  if( n > 1 ) {
    cout << 3*n-8
         << endl;
    F(n-1);
    F(n-4);
    }
}
Обозначим через a%b остаток от деления натурального числа a на натуральное число b, а через a//b – целую часть от деления a на b. Алгоритм вычисления функции F(n), где n – натуральное число, задан следующими соотношениями:
F(n) = 1, если n = 0,
F(n) = F(n // 10) · (n % 10), если n > 0 и n нечётно;
F(n) = F(n // 10), если n > 0 и n чётно.
Определите количество значений n, таких что 109 ≤ n ≤ 1010, для которых F(n) = 49.
Ниже на пяти языках программирования записан рекурсивный алгоритм F.
Бейсик Python
DECLARE SUB F(n)
SUB F(n)
  IF n > 2 THEN
    PRINT n
    F(n - 3)
    F(n  4)
  END IF
END SUB
def F(n):
    if n > 2:
        print(n)
        F(n - 3)
        F(n 4)
 
Алгоритмический язык Паскаль
алг F(цел n)
нач
  если n > 2 то
    вывод n, нс
    F(n - 3)
    F(n -4)
  все
кон
procedure F(n: integer);
begin
  if n > 2 then begin
    writeln(n);
    F(n - 3);
    F(n -4)
  end
end;
Си
void F(int n) {
  if (n > 2) {
    printf("%d\n", n);
    F(n - 3);
    F(n -4);
  }
}
Чему равна сумма напечатанных на экране чисел при выполнении вызова F(10)
 
16-28#39781
Алгоритм вычисления значения функций F(n) и G(n), где n – цело неотрицательное число, задан следующими соотношениями:

F(n) = n % 10, если n < 100;
F(n) = n / 100 + G(n%100), в остальных случаях;
G(n) = n % 10, если n < 100;
G(n) = n % 100 + F(n/100), в остальных случаях;

Определите сумму всех значений функции G(n), для всех значений n меньших 100000?
Знак / - означает операцию целочисленного деления.
Знак % - означает операцию вычисления остатка при делении двух целых чисел.



 
16-26#39779
Алгоритм вычисления значения функций F(n) и G(n), где n – натуральное число, задан следующими соотношениями:

F(n) = n + 10, если n < 10;
F(n) = n % 10 + G(F(n/10)), в остальных случаях;
G(n) = n + 10, если n < 10;
G(n) = n % 10 + G(n/10), в остальных случаях;

Определите сумму всех значений функции F(n) для всех значений n меньших 1000000?
Знак / - означает операцию целочисленного деления.
Знак % - означает операцию вычисления остатка при делении двух целых чисел.


 
16-23#39776
Алгоритм вычисления значения функций F(n) и G(n), где n – натуральное число, задан следующими соотношениями:

F(n) = n + 10, если n < 10;
F(n) = n % 10 + G(F(n/10)), в остальных случаях;
G(n) = n + 10, если n < 10;
G(n) = n % 10 + G(n/10), в остальных случаях;

Определите, сколько различных значений принимает функция F(n) для всех n меньших 1000000?
Знак / - означает операцию целочисленного деления. 
Знак % - означает операцию вычисления остатка от деления двух целых чисел.




 
16-20#39756
Алгоритм вычисления значения функции F(n), где n – неотрицательное число, задан следующими соотношениями:

F(0) = 9;
F(n) = n/3 + f(n/3)
, если n > 0, и число n кратно 9;
F(n) = n/2 + f(n/2), в остальных случаях.

Определите, сколько различных значений принимает функция F(n) на отрезке [1, 1000000]?
Знак / - означает операцию целочисленного деления.



 
16-19#39754
Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:

F(0) = 15;
F(n) = n/5 + f(n/2)
, если n > 0, и число n кратно 20;
F(n) = f(n/3), в остальных случаях.

Определите, сколько различных значений принимает функция F(n) на отрезке [1, 1000000]?
Знак / - означает операцию целочисленного деления.



 
Поделиться
Класснуть