Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (4)

Лучшие ответы пользователя

Все ответы (4)
  • Как подготовить себя к олимпиадному программированию?

    @JustNick
    Если ты не можешь освоить теорию в виде текста, задумайся, а стоит ли тебе вообще заниматься программированием?)

    Документации текстом обычно люди пишут. Даже на CodeForces ребята пишут свои статейки, где описывают разные оптимизации, структуры данных, алгоритмы. Например, PBDS_Tree, которая часто может помогать на финалах перечневых олимпиадок первого уровня.

    Есть книга Лааксонена "Олимпиадное программирование". В ней он описал все алгоритмы, которые могут встречаться на олимпиадах по информатике. Думаю, этого достаточно.
    Если хочешь прям какой-то курс. Я надеюсь, это не воспримется, как реклама, то на foxford есть хороший курс по подготовке к олимпиадам по программированию.

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

    Как говорил Брюс Ли: "Я не боюсь человека, который знает 10000 алгоритмов. Я боюсь человека, который знает 1 алгоритм и решал с помощью него 10000 задач."
    Ответ написан
  • Объясните как работает в данном случае программа?

    @JustNick
    После того, как вы внутри range указали длину списка, он сохраняет изначальную его длину, переменная внутри range не изменяется.
    Простыми словами, он запомнил, что len(lst) = 5 и дальше не будет изменять этот параметр.

    В вашем случае лучше длину списка задать изначально и задать условие выхода:

    n = len(lst)
    
    for i in range(n):
        if i == n:
            break
        if len(lst[i]) == 1:
            lst.pop(i)
            n -= 1
    Ответ написан
  • Как реализовать задачу на пайтоне?

    @JustNick
    Решение за O(n + k), n - длина первой строки, k - длина второй строки:

    Создадим словарь, в котором будем хранить количество вхождений каждой из букв первого слова. Например, "hello", будет представлено в словаре:
    {
    'h' : 1,
    'e' : 1,
    'l' : 2,
    'o' : 1
    }

    Далее просто пробегаемся по второму слову и проверяем, есть ли текущая буква в словаре. Если нет, то такое слово составить невозможно. Есть есть, то просто вычитаем у значения буквы в словаре единицу. Если не можем вычесть(не хватает букв в первом слове), то ответ тоже нет.

    s1 = str(input())
    s2 = str(input())
    
    d = dict()
    
    for i in range(len(s1)):
        if s1[i] not in d:
            d[s1[i]] = 1
        else:
            d[s1[i]] += 1
    
    
    def check():
        for i in range(len(s2)):
            if s2[i] not in d:
                return "NO"
            if d[s2[i]] - 1 >= 0:
                d[s2[i]] -= 1
            else:
                return "NO"
    
        return "YES"
    
    
    print(check())
    Ответ написан
  • Как решить задачу на логику и математику в Python?

    @JustNick
    Пусть,
    n - кол-во км, которое нужно будет пробежать на марафоне.
    s - кол-во км. на 1 тренировке.
    p - кол-во. проц., на которое увеличивается s.

    Составим мат. модель. Получим:
    1 день: S
    2 день: (1 + p/100) * S
    3 день: (1 + p/100)^2 * S
    ...
    Конечная формула: (1 + p/100)^k * s >= n; s >= 0, поэтому на него и делим. k - количество дней.
    Получим: k = log 1+p/100(n/s) + 1. Прибавляем единицу, потому что ещё должны посчитать первый день.

    Код:

    import math
    
    n = int(input())
    s = int(input())
    p = int(input())
    
    ans = round(math.log((n / s), (1 + p / 100))) + 1
    
    print(ans)
    Ответ написан