Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2020, 17:50   #31
FsGaCh
Пользователь
 
Регистрация: 08.02.2020
Сообщений: 78
По умолчанию

Назовем число "зеркально простым", если само число является простым, и простым является число, записанное теми же цифрами в обратном порядке.
Найти количество "зеркально простых" чисел на промежутке от a до b.

Входные данные:
Два числа a и b (1 ≤ a, b ≤ 10000).

Выходные данные:
Вывести количество "зеркально простых" чисел на промежутке от a до b включительно.

Мой вариант, если возможно, скажите как можно упростить:
Код:
ab = input().split()
a = int(ab[0])
b = int(ab[1])
t = 0
am = 0
count = 0
if a <= 10000 and a >= 1 and b <= 10000 and b >= 1 and a < b:
    for i in range(a, b):
        a = int(str(i)[::-1])
        t = 0
        d1 = []
        d2 = []
        for k in range(1, i + 1):
            if i % k == 0:
                d1.append(k)
        if len(d1) == 2:
            t += 1
        for k in range(1, a + 1):
            if a % k == 0:
                d2.append(k)
        if len(d2) == 2:
            t += 1
        if t == 2:
            count += 1
print(count)
FsGaCh вне форума Ответить с цитированием
Старый 24.05.2020, 17:53   #32
FsGaCh
Пользователь
 
Регистрация: 08.02.2020
Сообщений: 78
По умолчанию

Разрежьте отрезок длинной L на наибольшее количество частей, длины которых - натуральные числа, чтобы из них невозможно было сложить ни одного треугольника.

Входные данные:
Длина отрезка L (4 ≤ L ≤ 2∙10^9).

Выходные данные:
Искомое количество частей.

Я не понял что тут от меня нужно. Если я правильно понимаю, ВСЕГДА у треугольника 3 стороны, то и отрезков максимум будет 3. Поэтому и сделал вот так :
Код:
#Длины одной строноы треугольника всегда должна быть меньше суммы других сторон
L = input()
if L >= 4 and L <= 2*(10**9):
    print(3)

Последний раз редактировалось FsGaCh; 25.05.2020 в 15:18.
FsGaCh вне форума Ответить с цитированием
Старый 24.05.2020, 18:43   #33
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

берем отрезок длины 4. его можно...
1. ... разрезать на 4 части (1+1+1+1) взять из них 3 и сложить равносторонний треугольник.
2. ... разрезать на 3 части (2+1+1) и попробуйте сложить треугольник теперь.

надо разрезать на как можно большее число частей НО так чтобы не нашлось трех деталей из которых получился бы треугольник.
в первом примере максимально возможное число частей, но увы... из них получился треугольник.
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 24.05.2020, 19:20   #34
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Про бутылки воды. Во-первых, лучше оставаться в целых числах (то есть домножить N на 10, делить на 12). Во-вторых, в цикле нет компенсации за продажу бутылок. В-третьих, можно вывести формулу:
Код:
print((10 * int(input()) - 2) // 10)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 24.05.2020, 19:26   #35
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Цитата:
Назовем число "зеркально простым"
Пишем функцию для проверки числа на простоту и прогоняем все числа из диапазона.
Проверка на простоту - отсутствие делителей.
В цикле проверяем остаток. Если ноль - break.

PS: для проверки числа на простоту достаточно искать делители от 2 до sqrt(N)
Это существенно ускоряет вычисления.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 25.05.2020, 14:49   #36
FsGaCh
Пользователь
 
Регистрация: 08.02.2020
Сообщений: 78
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Про бутылки воды. Во-первых, лучше оставаться в целых числах (то есть домножить N на 10, делить на 12). Во-вторых, в цикле нет компенсации за продажу бутылок. В-третьих, можно вывести формулу:
Код:
print((10 * int(input()) - 2) // 10)
Если коротко, то просто надо вычитать 1 из вводных данных? Какие данные не вводил, выводит именно так. Ввожу 0, выводит -1.
Если так, то думаю формулу можно изменить так:
Код:
print(int(input()) - 1)

Последний раз редактировалось FsGaCh; 25.05.2020 в 14:57.
FsGaCh вне форума Ответить с цитированием
Старый 25.05.2020, 19:53   #37
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Да, пожалуй, для натуральных N можно и так считать.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 25.05.2020, 23:07   #38
FsGaCh
Пользователь
 
Регистрация: 08.02.2020
Сообщений: 78
По умолчанию

Цитата:
Сообщение от FsGaCh Посмотреть сообщение
Тогда если правильной понимаю, всгда будет выводить 3? Я думал что если разрезать на 4 частей, тогда не получится создать треугольник, потому что тогда это будет 4 стороны, а это не треугольник. И на 2 части разрезать не получится, потому что получится фигура с двумя сторонами, а это уже точно не треугольник....
Цитата:
Сообщение от evg_m Посмотреть сообщение
берем отрезок длины 4. его можно...
1. ... разрезать на 4 части (1+1+1+1) взять из них 3 и сложить равносторонний треугольник.
2. ... разрезать на 3 части (2+1+1) и попробуйте сложить треугольник теперь.

надо разрезать на как можно большее число частей НО так чтобы не нашлось трех деталей из которых получился бы треугольник.
в первом примере максимально возможное число частей, но увы... из них получился треугольник.
Тогда если правильно понимаю, всгда будет выводить 3? Я думал что если разрезать на 4 части, тогда не получится создать треугольник, потому что будут 4 стороны, а это не треугольник. И на 2 части разрезать не получится, потому что получится фигура с двумя сторонами, а это уже точно не треугольник....
FsGaCh вне форума Ответить с цитированием
Старый 26.05.2020, 00:21   #39
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Нет. Вот есть отрезок. Его порезали на какие-то кусочки. Потом берутся любые 3 кусочка, и из них пытаются сложить треугольник. Если получилось сложить, то такая нарезка не подходит. Если разрезать только на 2 кусочка, то не из чего будет в принципе сложить треугольник. Но требуется нарезать на максимально возможное количество кусочков. Пример уважаемого evg_m навел меня на мысль, что ответом является количество элементов последовательности Фибоначчи, сумма которых не превосходит требуемой длины отрезка.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 26.05.2020, 11:24   #40
FsGaCh
Пользователь
 
Регистрация: 08.02.2020
Сообщений: 78
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Нет. Вот есть отрезок. Его порезали на какие-то кусочки. Потом берутся любые 3 кусочка, и из них пытаются сложить треугольник. Если получилось сложить, то такая нарезка не подходит. Если разрезать только на 2 кусочка, то не из чего будет в принципе сложить треугольник. Но требуется нарезать на максимально возможное количество кусочков. Пример уважаемого evg_m навел меня на мысль, что ответом является количество элементов последовательности Фибоначчи, сумма которых не превосходит требуемой длины отрезка.
Как-то так?
Код:
n = int(input())
a = 1
b = 1
c = 2
count = 0
while c <= n:
    c = a + b
    a = b
    b = c
    count += 1
print(count)
FsGaCh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
готовлюсь к олимпиаде по информатике salauat Паскаль, Turbo Pascal, PascalABC.NET 25 01.12.2013 21:32
Подготовиться к олимпиаде за лето UaKot Свободное общение 20 10.05.2013 18:53
Подготовка к региональной олимпиаде New man Помощь студентам 20 14.12.2012 21:01
Задачи по олимпиаде Darick Помощь студентам 7 23.12.2011 15:45
Как подготовиться к олимпиаде? Kn793 Помощь студентам 16 26.07.2008 12:22