profile
Размещено 4 года назад по предмету Информатика от YMHukBoTaH

Ввести целое число n. Найти сумму чисел не делящееся на 7, но делящееся на 3 среди чисел [n√n,n^2].
Python

  1. Ответ на вопрос
    Ответ на вопрос дан etojan

    Наивное решение:

    n = int(input())

    print(sum(filter(lambda x: x%7 != 0 and x%3 == 0, range(int(n**1.5), n**2+1))))

    Бахаем range в нужном диапазоне, фильтруем из него лямбдой числа по условию, складываем и выводим в консоль. Единственный нюанс, что n*sqrt(n) округляется вниз, что может быть проблемой, и тогда можно использовать math.ceil

    Главным же минусом его является производительность при переборе "в лоб". На самом деле, решить задачку можно не за O(n^2), а за O(1), если вспомнить про сумму арифметической прогрессии, и про то, как надо вычитать прогрессии с взаимно простыми шагами

    Нужно найти сумму прогрессии, попадающую в диапазон, с шагом 3, начиная с делящегося на 3 числа, и вычесть из неё сумму прогрессии с шагом 21, начиная с первого делящегося на 21 числа

    Объясняется это тем, что каждое седьмое число из первой прогрессии будет делиться на 7, а раз оно делится и на 3 тоже, то это число, делящееся на 21

    Выглядит страшно, но по факту здесь только задача в том, чтоб правильно округлить нижние границы диапазонов - from3 и from21 вверх, а верхние - to3 и to21 - вниз. Зато работает идеально быстро и вообще не зависит от размеров диапазонов (длинная арифметика не в счёт)

    import math

    n = int(input())

    from3 = math.ceil(n**1.5 / 3) * 3

    from21 = math.ceil(n**1.5 // 21) * 21

    to3 = n**2 // 3 * 3

    to21 = n**2 // 21 * 21

    sum3 = (from3+to3)*((to3-from3)//3+1) // 2

    sum21 = (from21+to21)*((to21-from21)//21+1) // 2

    print(sum3 - sum21)

Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 5 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.