Скорая помощь
Бригада скорой помощи выехала по вызову в один из отделенных районов. К сожалению, когда диспетчер получил вызов, он успел записать только адрес дома и номер квартиры 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)
Python
Python.Помогите пожалуйста!!! Очень тяжёлая задача!
Из 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)
Пусть 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)
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)
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)
Кто-нибудь решил?
Похожие вопросы
- Задача 10. Игра «Компьютер угадывает число» язык кода Python помогите пожалуйста
- Задача на python Помогите пожалуйста
- Python, помогите, пожалуйста
- Python. Помогите пожалуйста с кодом
- Python помогите пожалуйста
- Python, помогите пожалуйста
- Помогите, пожалуйста, решить задачу Python
- Помогите пожалуйста с задачей на Python.
- Помогите пожалуйста с задачей по python!
- Помогите решить задачу на Python. Никак не могу решить задачу, больше дня не могу найти ответ! Никакой код не работает.
1
1
1
1
Должно быть 0 1
У вас же -1 -1