Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Шапка
- target = ' Hard.3 '
- print('\r\n' + 10 * '*' + ' Задача' + target + 10 * '*')
- print('')
- # Ввод строки с предположительно номером квартиры
- while True:
- room = input('Введите номер квартиры от 1 до 2000000000: ')
- try:
- room = int(room)
- if room in range(1, 2000000001):
- break
- else:
- raise ValueError
- except ValueError:
- print('Некорректный ввод!')
- # Работа алгоритма
- # Башня разбивается на блоки с одинаковым количеством квартир на этаже
- # Список квартир с наибольшим номером в каждом блоке. Дина списка=кол-ву блоков
- list_last_room_in_sqare = []
- # Вычисление список квартир с наибольшим номером в каждом блоке
- k = 1
- d = 0
- ssq = 0
- while ssq < 2000000000:
- d += k
- ssq += d
- k += 2
- list_last_room_in_sqare.append(ssq)
- print('\r\nЭтапы расчета:\r\n' + '-'*40)
- print('Всего квадратных блоков в башне: ' + str(len(list_last_room_in_sqare)))
- print('Максимальный номер квартиры в самом верхнем блоке: ' + str(ssq))
- # Поиск блока в котором находится квартира и этажа, с которого начинается блок
- etage = 1
- sqare = 1
- first_room_in_sqare = 1
- last_room_in_sqare = 0
- for last_room_in_sqare in list_last_room_in_sqare:
- if first_room_in_sqare <= room <= last_room_in_sqare:
- break
- first_room_in_sqare = last_room_in_sqare + 1
- etage += sqare
- sqare += 1
- print('Квартира №{} находится в блоке №{} размером {}х{} с номерами квартир от {} до {}'.format(room, sqare, sqare, sqare, first_room_in_sqare, last_room_in_sqare))
- # Смещение квартиры в блоке
- delta = room - first_room_in_sqare
- print('Смещение этажа в блоке: ' + str(int(delta / sqare)))
- print('Смещение квартиры на этаже: ' + str(delta % sqare))
- # Вывод результата
- print('\r\nРезультат:\r\n' + '-'*40)
- print('Квартира №{} находится на {} этаже, {} слева'.format(room, (etage+int(delta / sqare)), 1 + (delta % sqare)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement