Задание 16 // КЕГЭ по информатике 2024

แชร์
ฝัง
  • เผยแพร่เมื่อ 30 ม.ค. 2025

ความคิดเห็น • 50

  • @Dennyes3
    @Dennyes3 2 ปีที่แล้ว +12

    Все хорошо и понятно объясняешь, лайк однозначно!

  • @iformatics
    @iformatics 11 หลายเดือนก่อน +16

    Проблема использования этой функции заключается в том, что она увеличивает максимальную возможную длину стека вызовов в интерпретаторе Python, но при этом не меняет, что логично, физический размер стека, выделяемый на процесс операционной системой. Физический размер стека зависит от операционной системы и самого компьютера, он может варьироваться в пределах от 32KiB до 10MiB. Таким образом, если физический размер стека под процесс (установленный на самом компьютере) позволяет, допустим, хранить цепочку из 2200 вызовов, то увеличение стека в Python до 2201 вызовов может привести к переполнению физического размера стека, вследствие чего процесс аварийно завершится. Поэтому можно столкнуться с тем, что на одном компьютере задача решится с помощью расширения глубины стека, но на другом компьютере нет, ибо физические размеры стека у них различны. Мы не знаем, какой компьютер / ноутбук будет на экзамене, потому считать решение посредством setrecursionlimit() универсальным ни в коем случае нельзя, да и тем более задачу можно составить таким образом, что с переполнением стека либо с очень долгим выполнением рекурсии придется столкнуться практически на любой машине.

  • @screeeps
    @screeeps 2 ปีที่แล้ว +8

    прекрасный стрим. спасибо!

    • @crushitelyoutuba
      @crushitelyoutuba ปีที่แล้ว

      да ладно.... Тупак сдает ЕГЭ по инфе????? Как сдал ?

  • @klik7768
    @klik7768 2 ปีที่แล้ว +10

    Алексей, элегантнейшим образом подчеркнул (n).
    [Ассоциация перфекционистов одобряет].
    1:33:27

  • @minegooodd3473
    @minegooodd3473 ปีที่แล้ว +6

    55:10 есть крч подлость, если в ретерне использовать целочисленное деление вместе с кэшем, то кеш все нормально запомнит и 174 хорошо посчитается
    return n // 4 + f(n // 4 + 2) if n % 4 == 0 else 1 + f(n + 2)
    НО если сделать просто n / 4 + f(n / 4 + 2) (деление обычное), то кеш запомнит именно float значения и f(174) - f(3) будет считать заново в тупую( но если их во float перевести то ок всё
    крч следите за тем, что в кеш сохраняете, иначе бесполезно всё xd

  • @TGrod
    @TGrod 2 ปีที่แล้ว +4

    На 51:55 (это, конечно, топорный метод, но его можно использовать для проверки ручных вычислений). Из-за того, что в функции стоят одни плюсы можно ПРЕДПОЛОЖИТЬ, что рано или поздно у нас появится f(3) в цепочке, и просто в самой функции в начале прописать if n == 3: return 0 Т.е. мы просто вызываем f(174) и уже в функции как бы вычитаем f(3) и в итоге получаем результат. Повторюсь, что способ топорный и, я думаю, будет работать не везде

  • @wasderlord1243
    @wasderlord1243 10 หลายเดือนก่อน

    @kompege а почему from math не использовал? в задаче с факториалом 1:27:30

  • @renjerstars4434
    @renjerstars4434 ปีที่แล้ว +1

    51:56: Я знаю точно: невозможное возможно...
    from functools import *
    @cache
    def f(n):
    if n >= 10000: return n
    if n%4 == 0: return n//4 + f(n//4+2)
    return 1 + f(n+2)
    for i in range(10002, 1, -1):
    if i%2 == 0: continue
    f(i)
    counter = 0
    for i in range(1, 10000):
    f(i)
    print(f(174) - f(3))

  • @TankucT_AC
    @TankucT_AC 11 หลายเดือนก่อน

    Странно, что этот прекрасный гайд посмотрело так мало человек:(

  • @MelevaTe
    @MelevaTe ปีที่แล้ว +2

    Дядя Сережа ошибся в третьем условии. Там должен быть n*(n-1) + f(n-1) -f(n-2) и тогда ответ из сборника получится

  • @georgwestminster3547
    @georgwestminster3547 10 หลายเดือนก่อน

    45:37 такие задачи довольно легко решаются на плюсах, особенно, если юзать Ofast/O3. Насколько я знаю, на экзамене скорее будет MSVC, вроде он даже нормально компилит с O3

    • @krosh8982
      @krosh8982 9 หลายเดือนก่อน +3

      Совет для 1% людей?

  • @sheffchenko
    @sheffchenko 2 ปีที่แล้ว +1

    Алексей, спасибо вам за видео! Задание 16, ЕГЭ по информатике, стрим, ЕГЭ, информатика

  • @ОнтоКришус
    @ОнтоКришус 2 ปีที่แล้ว +1

    10:12 почему-то у меня IDLE завершает программу когда доходит до print(f(5000)/f(4994)), но не выдаёт никакую ошибку, просто ничего не выводит, а на видео за секунду посчитала. В чём моя проблема?

    • @kompege
      @kompege  2 ปีที่แล้ว

      Про это можно почитать тут: vk.com/wall-205865487_6122
      Выход: смириться с тем что не прокатило и использовать мемоизацию (она точно работает всегда)

    • @ОнтоКришус
      @ОнтоКришус 2 ปีที่แล้ว

      @@kompege понял, спасибо

  • @leos1367
    @leos1367 ปีที่แล้ว +1

    34:55 Зато я смог. На это потребовалось 10 секунд и калькулятор. 2022*2024 + 2020 = 4094548

    • @katezombie3435
      @katezombie3435 11 หลายเดือนก่อน

      10 сек это округление?)
      У меня мин 2-3 вручную, но решается как и с измененным заданием, все сократилось и так хорошо стало😅

    • @leos1367
      @leos1367 11 หลายเดือนก่อน

      @@katezombie3435Сомневаюсь, я бы не стал просто выпендриваться. А сколько точно не помню, я уже успел семестр в университете отучиться

  • @TodayI-z2i
    @TodayI-z2i ปีที่แล้ว

    Время пришло!

  • @TGrod
    @TGrod 2 ปีที่แล้ว +1

    1:37:40 Мне кажется, что комбинаторный тут не совсем подходит. Точнее надо быть более внимательным, его используя, ну или писать прогу. В данном случае нам повезло, что первые 3 разряда оказались единицы. Т.е. никакое другое число, полученное сочетанием единиц, не будет превосходить это, но если нам будет дано, например, 800_000_000, то комбинаторика даст неверный ответ.
    Хотя зачем я пишу это? Никогда такую задачу не дадут

  • @yuuuuuuuuukkkoooo
    @yuuuuuuuuukkkoooo ปีที่แล้ว +1

    1:27:04 Дима Статный, что ты сделал

  • @НиколайЕмельянчук
    @НиколайЕмельянчук ปีที่แล้ว

    Очень круто

  • @GameChanger___
    @GameChanger___ 9 หลายเดือนก่อน

    1:23:37 Не понял, почему результат не должен измениться, если поменять 10 000 на 100

    • @lunkez
      @lunkez 9 หลายเดือนก่อน

      тоже этот момент не понял

  • @slonik7696
    @slonik7696 2 ปีที่แล้ว +1

    Алексей, у Вас был уже вебинар по 16. Получается, чтобы изучить данное задание, необходимо и тот вебинар просмотреть и этот?

    • @kompege
      @kompege  2 ปีที่แล้ว

      Да

  • @qusyl247
    @qusyl247 2 ปีที่แล้ว

    Здравствуйте,скажите пожалуйста,я правильно понял,что когда в вопросе,к примеру,f(2023)/f(2022),то мы умножаем полученные вызовы,а если f(2023) - f(2022) или f(2023) + f(2022) ,то мы складываем?

    • @kompege
      @kompege  2 ปีที่แล้ว +1

      Ну не совсем. Умножаем или складываем зависит от описания функции в условии задачи.

    • @qusyl247
      @qusyl247 2 ปีที่แล้ว

      @@kompege понял,спасибо.

  • @dimonpisya
    @dimonpisya ปีที่แล้ว

    А это может попасться на основе?

    • @Redactionben
      @Redactionben ปีที่แล้ว +1

      шанс есть, но не такой большой

  • @davitor7042
    @davitor7042 ปีที่แล้ว +2

    52:05
    можно через один цикл for закэшировать:
    for n in range(10000,1,-1):
    if n%4==1:
    f(n)

    • @minegooodd3473
      @minegooodd3473 ปีที่แล้ว

      я просто все нечетные значение закешировал
      for i in range(10000, 0, -1):
      if i % 2 == 0: continue
      f(i)
      print(f(174) - f(3))

    • @davitor7042
      @davitor7042 ปีที่แล้ว

      @@minegooodd3473 одно и то же в принципе) главное решить

  • @artemdragonsky2229
    @artemdragonsky2229 2 ปีที่แล้ว

    Алексей, касаемо заданий на идейную рекурсию. Вы сказали, что на ЕГЭ этого точно не будет, однако свежий сборник Легиона во 2 варианте даёт такую задачу. Это просто хотелка авторов или как?

    • @kompege
      @kompege  2 ปีที่แล้ว

      Это просто хотелка авторов конкретного сборника

    • @artemdragonsky2229
      @artemdragonsky2229 2 ปีที่แล้ว

      @@kompege Понял, спасибо

  • @JeckPayn
    @JeckPayn 2 ปีที่แล้ว +2

    Здравствуйте, а 8-ое задание на поиск слов будет? На канале очень мало видео на эту тему

    • @kompege
      @kompege  2 ปีที่แล้ว +1

      Может быть 10 задание?
      Видео на канале по нему есть (смотрите плейлист за 2022 год)

  • @timofey3610
    @timofey3610 2 ปีที่แล้ว +3

    Такая гадость на ЕГЭ выпадала?

    • @kompege
      @kompege  2 ปีที่แล้ว +2

      Такая гадость в демоверсии )

    • @IDONTKNOW-wn5mx
      @IDONTKNOW-wn5mx ปีที่แล้ว +1

      @@kompege такая гадость в егэ 2023 была прям ща )

    • @crushitelyoutuba
      @crushitelyoutuba ปีที่แล้ว

      ​@@IDONTKNOW-wn5mxсерьезно?

    • @IDONTKNOW-wn5mx
      @IDONTKNOW-wn5mx ปีที่แล้ว

      @@crushitelyoutubaда, но вполне базовая 16 на сетрекуршнлимит

    • @IDONTKNOW-wn5mx
      @IDONTKNOW-wn5mx ปีที่แล้ว

      @@crushitelyoutubaно, если разбираешься, то руками за 30 секунд делается в том числе