Задача к ЕГЭ по информатике на тему «две функции» №1

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

F (n) = 1, при n < 5;

F (n) = F(n∕∕5), если n > 4 и при этом n д ели тся на 5;  » class=»math» src=»/images/inform/quest/quest-2505-4.svg» width=»auto»> </p>
<p class= F (n) = n− 5 ∗(n∕∕5)+ F(n − 5 ∗(n∕∕5)), если n > 4 и при этом n не делится на 5;  » class=»math» src=»/images/inform/quest/quest-2505-5.svg» width=»auto»> </p>
<p class= G (n) = 1, при n < 7;

G (n) = G(n∕∕7), если n > 6 и при этом n дели тся на 7;  » class=»math» src=»/images/inform/quest/quest-2505-7.svg» width=»auto»> </p>
<p class= G (n) = n− 7 ∗(n∕∕7)+ G(n − 7∗(n∕∕7)),  если n > 6 и при этом n не делится на 7;  » class=»math» src=»/images/inform/quest/quest-2505-8.svg» width=»auto»> </p>
<p class= При каких (каком) значениях (значении) n, выражение: G (n) + F(n)  , меньше 3  . В качестве ответа укажите сумму таких значений n  .

(Например: G(a)+ F (a) < 3  , G (b)+ F (b) < 3  . В ответ указываем сумму a  и b  ).

Решение программой:

def f(n):
    if n < 5:
        return 1
    if n % 5 == 0:
        return f(n // 5)
    return n - 5 * (n // 5) + f(n - 5 * (n // 5))

def g(n):
    if n < 7:
        return 1
    if n % 7 == 0:
        return g(n // 7)
    return n - 7 * (n // 7) + g(n - 7 * (n // 7))

ans = 0
for n in range(1000):
    if g(n) + f(n) < 3:
        ans += n
print(ans)

Ответ: 15
Оцените статью
Я решу все!