Python

Python.Помогите пожалуйста!!! Очень тяжёлая задача!

Скорая помощь
Бригада скорой помощи выехала по вызову в один из отделенных районов. К сожалению, когда диспетчер получил вызов, он успел записать только адрес дома и номер квартиры K1, а затем связь прервалась. Однако он вспомнил, что по этому же адресу дома некоторое время назад скорая помощь выезжала в квартиру K2, которая расположена в подъезда P2 на этаже N2. Известно, что в доме M этажей и количество квартир на каждой лестничной площадке одинаково. Напишите программу, которая вычилсяет номер подъезда P1 и номер этажа N1 квартиры K1.

Входные данные

Во входном файле записаны пять положительных целых чисел K1, M, K2, P2, N2. Все числа не превосходят 1000.

Выходные данные

Выведите два числа P1 и N1. Если входные данные не позволяют однозначно определить P1 или N1, вместо соответствующего числа напечатайте 0. Если входные данные противоречивы, напечатайте два числа –1 (минус один).

Примеры
Ввод
Вывод
89
20
41
1
11
Вывод
2 3

Вывод
11
1
1
1
1
Вывод
0 1

Мой код если кому надо, но он неверный
K1,M,K2,P2,N2 = int(input()), int(input()), int(input()), int(input()), int(input())
P1 = 0
N1 = 0
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)
Из P2, N2, K2 и M надо подсчитать минимальное и максимальное кол-во квартир на этаже. А потом сравнить, совпадают ли подъезд/этаж при подстановке в вычисления минимального и максимального кол-ва квартир на этаже.

Пусть J - кол-во квартир на этаже.
Тогда K2 должно лежать в диапазоне от:
(P2 - 1) * M * J + (K2 - 1) * J + 1 # номер первой квартиры на этаже
до:
(P2 - 1) * M * J + K2 * J # номер последней квартиры на этаже

Откуда высчитываем J_MIN и J_MAX.

Весь код:

import math
K1, M, K2, P2, N2 = int(input()), int(input()), int(input()), int(input()), int(input())
if P2 * N2 == 1: # 1-й этаж 1-го подъезда имеет решение только при K1 <= K2
~~if K1 <= K2:
~~~~print(1, 1)
~~else:
~~~~print(-1, -1)
~~os.exit()
J_MIN = max(math.ceil(K2 / ((P2 - 1) * M + N2)), 1) # >= 1 квартиры на этаже
J_MAX = math.floor((K2 - 1) / ((P2 - 1) * M + N2 - 1))
P1_MIN = (K1 - 1) // (M * J_MIN) + 1
N1_MIN = (K1 - 1) % (M * J_MIN) // J_MIN + 1
P1_MAX = (K1 - 1) // (M * J_MAX) + 1
N1_MAX = (K1 - 1) % (M * J_MAX) // J_MAX + 1
if P1_MIN != P1_MAX or N1_MIN != N1_MAX:
~~print(-1, -1)
else:
~~print(P1_MIN, N1_MIN)
Андрей Байзер
Андрей Байзер
88 359
Лучший ответ
Татьяна Пащенко При 11
1
1
1
1
Должно быть 0 1
У вас же -1 -1
Владимир Казанцев нет, не принимает, говорю же ему нужно именно 0 1 а не -1 -1
Джонни Мнемоник Можете подсказать последний пример, кто знает, он единственный у меня не проходит
Владимир Казанцев не проходит, может я куда-то нитуда подставил? у кого-нибудь получилось?
Кочетков Владимир нет не проходит
Владимир Казанцев что за задача та такая
Татьяна Пащенко Кто решил 30 37 или 40?
Олег Марихин у меня тож 35 есть
Олег Марихин наоборот
Олег Марихин я 37 решил
Олег Марихин пж скиньте 30
Олег Марихин какой день пытаюсь её решить
K1 = int(input())
M = int(input())
K2 = int(input())
P2 = int(input())
N2 = int(input())
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:
N1 = 1
for i in range(1,1000):
if i!=0:
while K1 % i != 0:
K1 = K1 + 1
P1 = (K1//i)
if K2 < P2 * N2 or N2 > M or K2 // P2 < M:
P1 = -1
N1 = -1
if P2 == 1 and N2 == 1:
P1 = 0
print(P1, N1)