Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/27: Рейтинг темы: голосов - 27, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 13.09.2023
Сообщений: 7

Сможет ли Алиса уложить лист в конверт по указанным правилам

13.09.2023, 12:22. Показов 5697. Ответов 17

Студворк — интернет-сервис помощи студентам
Алиса хочет поздравить Боба с днем рожденья. Она взяла прямоугольный лист бумаги размера a на b и написала на нем поздравление в стихах. У Алисы есть красивый конверт также прямоугольной формы размером u на v. Алиса хочет положить свое поздравление в этот конверт. Однако, лист может не войти в конверт. В этом случае Алиса готова сложить лист пополам вдоль одной из сторон, чтобы поместить его в конверт. Обратите внимание, что Алиса может сделать не более одного сгиба. Лист можно поворачивать, но одна из сторон листа должна быть параллельной одной из сторон конверта.

Напишите программу, которая определит, сможет ли Алиса уложить лист в конверт по указанным правилам.

Мы будем считать, что лист входит в конверт, если сторона листа будет строго меньше соответствующей стороны конверта.

Формат входных данных
На вход в первой строке подается два натуральных числа a и b — длины сторон листа. Во второй строке на вход подаются натуральные числа u и v — размеры конверта. Все числа не превосходят 1000.


Формат выходных данных
Если поздравление можно вложить в конверт без сгиба, то следует вывести число 0. Иначе, если поздравление можно вложить в конверт сделав один сгиб, то следует вывести число 1. В остальных случаях следует вывести число -1.

Python
1
2
3
4
5
6
7
8
9
a, b = map(int, input().split())
u, v = map(int, input().split())
 
if a <= u and b <= v:
    print(0)
elif a > v or b > u:
    print(1)
else:
    print(-1)
не проходит большинство тестов помогите решить проблему
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.09.2023, 12:22
Ответы с готовыми решениями:

Войдет ли лист в конверт
# -*- coding: utf-8 -*- # (if/elif/else) # Заданы размеры envelop_x, envelop_y - размеры конверта и paper_x, paper_y листа бумаги...

Определить, для какого минимального значения x Алиса сможет добиться того, чтобы Боб не смог выбрать призы
Алиса и Боб стали победителями телевикторины, и теперь им предстоит выбрать себе призы. На выбор предлагается n призов, пронумерованных...

Преобразование строки по указанным правилам
Сделать задачу с использованием списков на СИ Даны натуральное число n, символы s1, ..., sn. Будем рассматривать слова, образованные...

17
Йуный плагиат-падаван)
176 / 119 / 45
Регистрация: 17.10.2022
Сообщений: 566
13.09.2023, 12:33
Когда лист сгибается, его длина/ширина делится пополам, а вторая величина не меняется
Python
1
2
3
4
5
6
7
8
9
a, b = map(int, input().split())
u, v = map(int, input().split())
 
if a <= u and b <= v:
    print(0)
elif a / 2 < v and b < u or b / 2 < u and a < v:
    print(1)
else:
    print(-1)
ЗЫ: хотя не, тут сложнее, еще нужно добавить проверку на поворот, которой у вас в коде нет
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
a, b = map(int, input().split())
u, v = map(int, input().split())
 
# Сортируем, чтобы a и b были стороны меньшего и большего размера соответственно
a, b = sorted([a, b])
u, v = sorted([u, v])
 
# Проверка, влезает ли без сгиба
if a <= u and b <= v:
    print(0)
# Проверка, влезает ли с сгибом
elif a <= u and b/2 <= v:
    print(1)
else:
    print(-1)
1
0 / 0 / 0
Регистрация: 13.09.2023
Сообщений: 7
13.09.2023, 12:42  [ТС]
Некоторые тесты всё ещё не проходит но всё равно спасибо огромное за ответ
0
Йуный плагиат-падаван)
176 / 119 / 45
Регистрация: 17.10.2022
Сообщений: 566
13.09.2023, 12:42
Hih111, второй код?
0
0 / 0 / 0
Регистрация: 13.09.2023
Сообщений: 7
13.09.2023, 12:44  [ТС]
И первый и второй не все прошли((
0
Йуный плагиат-падаван)
176 / 119 / 45
Регистрация: 17.10.2022
Сообщений: 566
13.09.2023, 12:46
Лучший ответ Сообщение было отмечено Hih111 как решение

Решение

Hih111, тупанул, надо соединить первый и второй коды)
Python
1
2
3
4
5
6
7
8
9
10
a, b = map(int, input().split())
u, v = map(int, input().split())
a, b = sorted([a, b])
u, v = sorted([u, v])
if a <= u and b <= v:
    print(0)
elif b/2 <= u and a <= v or a/2 <= u and b <= v:
    print(1)
else:
    print(-1)
Добавлено через 41 секунду
ЗЫ: что за олимпиада?
2
Йуный плагиат-падаван)
176 / 119 / 45
Регистрация: 17.10.2022
Сообщений: 566
13.09.2023, 12:50
Hih111,

Не по теме:

спасиб, щас порешаю))



Добавлено через 1 минуту

Не по теме:

эхх, согласия родительского нет, не судьба тогда)



Добавлено через 25 секунд
Hih111,

Не по теме:

до какого числа идет?


мой код прошел?
0
0 / 0 / 0
Регистрация: 13.09.2023
Сообщений: 7
13.09.2023, 13:00  [ТС]
Пока что только первая волна идёт думаю время зарегаться и порешать ещё много

Добавлено через 37 секунд
Код прошёл 14 из 20 тестов
0
Йуный плагиат-падаван)
176 / 119 / 45
Регистрация: 17.10.2022
Сообщений: 566
13.09.2023, 13:15
Есть примеры тестов?Hih111,

Добавлено через 4 минуты
Python
1
2
3
4
5
6
7
8
9
10
11
12
a, b = map(int, input().split())
u, v = map(int, input().split())
a, b = sorted([a, b])
u, v = sorted([u, v])
if a <= u and b <= v:
    print(0)
elif b/2 <= u and a <= v or a/2 <= u and b <= v:
    print(1)
elif a or b == 0:
    print(0)
else:
    print(-1)
странно тогда, но возможно так пройдет
0
0 / 0 / 0
Регистрация: 13.09.2023
Сообщений: 7
13.09.2023, 13:19  [ТС]
К сожалению нет(
0
Йуный плагиат-падаван)
176 / 119 / 45
Регистрация: 17.10.2022
Сообщений: 566
13.09.2023, 13:22
Hih111, не заметил этого:
Цитата Сообщение от Hih111 Посмотреть сообщение
если сторона листа будет строго меньше соответствующей стороны конверта.
Python
1
2
3
4
5
6
7
8
9
10
11
12
a, b = map(int, input().split())
u, v = map(int, input().split())
a, b = sorted([a, b])
u, v = sorted([u, v])
if a <= u and b <= v:
    print(0)
elif a / 2 < v and b < u or b / 2 < u and a < v:
    print(1)
elif a or b == 0:
    print(0)
else:
    print(-1)
1
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
13.09.2023, 16:51
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
a,b = sorted(map(int, input('a,b->').split()))
K = sorted(map(int, input('u,v->').split()))
 
L = a,b
if L[0] < K[0] and L[1] < K[1]:
    print(0)
else:
    for L in [(a/2,b), sorted((a,b/2))]:
        if L[0] < K[0] and L[1] < K[1]:
            print(1)
            break
    else:
        print(-1)
2
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
14.09.2023, 12:27
Ну или так:
Python
1
2
3
4
5
6
7
8
9
10
11
12
def fits_in(L, K, level):
    L = sorted(L)
    K = sorted(K)
    res = L[0] < K[0] and L[1] < K[1]
    if res:
        print(level)
    return res
 
a, b = map(int, input('размеры листа->').split())
K = list(map(int, input('размеры конверта->').split()))
 
fits_in((a,b), K, 0) or fits_in((a/2,b), K, 1) or fits_in((a,b/2), K, 1) or print(-1)
Еще вариант:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def fits_in(level, K, a,b):
    K = sorted(K)
    for L in ((a/2**level, b), (b/2**level, a)):
        L = sorted(L)
        res = L[0] < K[0] and L[1] < K[1]
        if res:
            print(level)
            return res
    return res
 
L = list(map(int, input('размеры листа->').split()))
K = list(map(int, input('размеры конверта->').split()))
 
for level in range(2):
    if fits_in(level, K, *L):
        break
else:
    print(-1)
1
Йуный плагиат-падаван)
176 / 119 / 45
Регистрация: 17.10.2022
Сообщений: 566
14.09.2023, 21:58
UPD:
олимпиада очень легкая, не почуствовал, из блока информатики решил все задания за 50 минут из отведенных 4 часа на максимум, кстати решения iSmokeJC и мои неверны по обеим задачам, но отдебажить их легко(я писал с нуля)
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
14.09.2023, 22:40
Еще вариант:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def fits_in(L, K):
    K.sort()
    for level in range(2):
        for coord_ind in range(2):
            LL = L.copy()
            LL[coord_ind] /= 2 ** level
            LL.sort()
            res = LL[0] < K[0] and LL[1] < K[1]
            if res:
                print(level)
                return res
    return res
 
L = list(map(int, input('размеры листа->').split()))
K = list(map(int, input('размеры конверта->').split()))
if not fits_in(L,K):
    print(-1)
0
5519 / 2872 / 571
Регистрация: 07.11.2019
Сообщений: 4,762
15.09.2023, 06:38
Python
1
2
3
4
def test(a,b,c,d):
    k,p,f1,f2=map(sorted,[[c,d],[a,b],[a/2,b],[a,b/2]])
    idx=sum(all(i<j for i,j in zip(g, k)) for g in (p, f1, f2))
    return (-1,1,1,0)[idx]
1
Йуный плагиат-падаван)
176 / 119 / 45
Регистрация: 17.10.2022
Сообщений: 566
15.09.2023, 09:56
Hih111, на какую специальность пишешь?
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
15.09.2023, 14:06
Сортировка не нужна на самом деле. Надо просто максимум сравнивать с максимумом, а минимум с минимумом:
Python
1
2
3
4
L0,L1 = list(map(int, input('размеры листа->').split()))
K = list(map(int, input('размеры конверта->').split()))
res = list(map(lambda L: max(L)<max(K) and min(L)<min(K), [(L0,L1), (L0/2,L1), (L0,L1/2)]))
print(1-res[0] if max(res) else -1)
Чуть улучшил предыдущий вариант:
Python
1
2
3
4
5
6
7
8
9
10
11
12
def check(L, K):
    for level in range(2):
        for coord_ind in range(2):
            LL = L.copy()
            LL[coord_ind] /= 2 ** level
            if max(LL) < max(K) and min(LL) < min(K):
                return level
    return -1
 
L = list(map(int, input('размеры листа->').split()))
K = list(map(int, input('размеры конверта->').split()))
print(check(L, K))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.09.2023, 14:06
Помогаю со студенческими работами здесь

Сформировать матрицу по указанным правилам
Записать в одну программу код с использованием многомерного массива Запрещено размещать задания в виде картинки. Перепечатайте текстом...

Заполнить матрицы по указанным правилам
Напишите программу, в которой объявляется массив размером 5х10 и массив размером 5х5. Первый массив заполняется случайными числами, в...

Заполнить массив по указанным правилам
Создать функцию Task1, принимающую в качестве аргументов количество строк rows и количество столбцов cols двумерного массива. Функция...

Заполнить матрицу по указанным правилам
С клавиатуры вводится целое число n (от 0 до 7). Имеется двумерный массив размером 10х10. Заполнить матрицу числами от 0 до 99...

Сформировать матрицу по указанным правилам
Сформировать из матрицы А (10,10) матрицу В (10,10) по следующий правилам: 1) элементы матриц А и В принимают только значения 0 или 1;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru