Форум сайта python.su
Здравствуйте.
Есть программа, выдаёт ошибку на 7 тесте, подскажите, пожалуйста, как исправить
Мой код:
K1, M, K2, P2, N2 = map(int, input().split()) if M != 1: for i in range(1,1000): if i!=0 and N2==((K2-1)//i)+1: P1 = (((K1-1)//i)//(M-1))+1 N1=(((K1-1)//i)%(M-1)) if M == 1: for i in range(1,1000): P1 = (K1//i)%1 N1 = M if K2 < P2*M or N2 > M: P1 = -1 N1 = -1 print(P1, N1)
Отредактировано Adriana (Июль 9, 2022 22:14:33)
Офлайн
Adrianaвы искренне полагаете, что понятие “седьмой тест” что-то значит для большинства людей?
Есть программа, выдаёт ошибку на 7 тесте
Офлайн
FishHookпоняла)) я думала есть определённый критерий для каждого теста
Офлайн
AdrianaТут надо составить параметризованную систему неравенств, а потом итеративно подбирать для неё количество квартир на этаже, начиная с единицы и заканчивая тысячей. Когда количество квартир на этаже станет известно, тогда по этому количеству квартир на этаже можно вычислить сначала номер подъезда, а потом по этому номеру подъезда можно вычислить номер этажа в этом подъезде.
Условие задачи:
Бригада скорой помощи выехала по вызову в один из отделенных районов. К сожалению, когда диспетчер получил вызов, он успел записать только адрес дома и номер квартиры K1, а затем связь прервалась. Однако он вспомнил, что по этому же адресу дома некоторое время назад скорая помощь выезжала в квартиру K2, которая расположена в подъезда P2 на этаже N2. Известно, что в доме M этажей и количество квартир на каждой лестничной площадке одинаково. Напишите программу, которая вычилсяет номер подъезда P1 и номер этажа N1 квартиры K1.
Формат ввода
Во входном файле записаны пять положительных целых чисел K1, M, K2, P2, N2. Все числа не превосходят 1000.
Формат вывода
Выведите два числа P1 и N1. Если входные данные не позволяют однозначно определить P1 или N1, вместо соответствующего числа напечатайте 0. Если входные данные противоречивы, напечатайте два числа –1.
Пример 1
Ввод
89 20 41 1 11
Вывод
2 3
AdrianaДаже если ты исправишь пределы в range(), так как твои range()'ы сейчас перебирают только до 999, то это не изменит ничего.
Есть программа, выдаёт ошибку на 7 тесте, подскажите, пожалуйста, как исправить
Adrianai никогда не будет равно нулю в этом цикле, зачем её проверять на ноль?for i in range(1,1000): if i!=0 and N2==((K2-1)//i)+1:
Отредактировано py.user.next (Июль 10, 2022 07:38:20)
Офлайн
FishHookно вы же понимаете шо ответ в любом случае 42
закон 88
Офлайн
Adrianaа где трасебек сам то
выдаёт ошибку на 7 тесте
Офлайн
AD0DE412в тесте же
Офлайн
py.user.nextВопрос даже больше в том, зачем ТС, ударившись в откровенную олимпиадщину, пришёл на форум за помощью.. Выглядит как штангист, который пропускал трени, вследствие чего не смог взять вес на соревновании и побежал нанимать грузчиков.. Те кто придумывают подобные задачи, видимо настолько преисполнились, что даже правдоподобную жизненную ситуацию под своё это неравенство подогнать не смогли, где это могло бы пригодиться.
Ну, и зачем она нужна тогда? Обычная олимпиадная задача - пустая трата времени
AdrianaОдно только это утверждение обесценивает программу. Это практически не применимо к новым человейникам, а количество квартир на этаже в советских типовых панельках знает любой водила скорой помощи, да даже если не знает, достаточно забежать в первый попавшийся подъезд и глянуть номер квартиры слева и по дверям посчитать. Тамбуры закрыты? Считай по звонкам. Или бабок возле подъезда напряги. Да и над каждым подъездом висит табличка с количеством квартир в нём. Бред короче какой-то.
Известно, что в доме M этажей и количество квартир на каждой лестничной площадке одинаково.
AdrianaМежду постановкой задачи и вашей конкретной реализацией пропасть из формул, построения алгоритма и пр. Вы бы хоть пару комментариев в коде оставили, пытаясь обьяснить, что и зачем вы делаете.. Что такое 7 тест?
программа, выдаёт ошибку на 7 тесте, подскажите, пожалуйста, как исправить
py.user.nextВот да.
Сначала нужно математически её решить, а потом уже эту математику перевести в реализацию в виде кода на языке программирования
Отредактировано Palrom (Июль 10, 2022 12:12:04)
Офлайн
PalromНе, я вот взял его решение оттуда, подставил туда перевёрнутые данные, выдало ерунду
Вот тут вроде как решили вашу задачу:
https://qna.habr.com/q/733429
#!/usr/bin/env python3 dann = [ (89, 20, 41, 1, 11), (11, 1, 1, 1, 1), (41, 20, 89, 2, 3) ] def round_up(v, d): result = v // d + (1 if v % d else 0) return result def find(room_1, max_level, room_old, p_old, level_old): count_room_for_level = 0 # Определим количество этажей на этаже if max_level == 1 and p_old == 1: return 1, 1 for count_room_for_level in range(40): if ((level_old - 1) * count_room_for_level) * p_old < \ room_old < (count_room_for_level * level_old) * p_old: #print(count_room_for_level) break else: return -1 # Определим возможный подъезд p_new = round_up(room_1, (max_level * count_room_for_level)) # Этаж level_new = round_up(room_1, count_room_for_level) % max_level #print(p_new, level_new) return p_new, level_new #print(list(find(*v) for v in dann)) for i in dann: print(i, '->', find(*i))
[guest@localhost domkv]$ ./domkv1.py
(89, 20, 41, 1, 11) -> (2, 3)
(11, 1, 1, 1, 1) -> (1, 1)
(41, 20, 89, 2, 3) -> (1, 3)
[guest@localhost domkv]$
PalromНе, такие задачи маскируют всякие области, где это может быть нужно. Например, криптоанализ: там бывает, что поступают шифротексты, зашифрованные известным алгоритмом, а нужно найти ключ шифрования, и по битам в этом шифротексте методом построения гипотез проверяют типа “а там могла быть такая-то буква в ключе или не могло её там быть; и если она там могла быть, то с какой вероятностью она там была и выше ли эта вероятность, чем вероятность того, что там этой буквы не было”. Ну, вот таким макаром там ковыряют эти шифры разные, так вскрывают всякую хрень в итоге. Или же вирусная аналитика: там тоже приходит какой-то вирус и нужно понять, из какого примерно кода он был скомпилирован, и происходит обратная разработка (reverse engineering), и для этого тоже надо строить гипотезы, что-то там определять наугад и так далее.
Те кто придумывают подобные задачи, видимо настолько преисполнились, что даже правдоподобную жизненную ситуацию под своё это неравенство подогнать не смогли, где это могло бы пригодиться.
Отредактировано py.user.next (Июль 11, 2022 01:10:20)
Офлайн