Advertisement
Guest User

Андрей денисов

a guest
Nov 21st, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.48 KB | None | 0 0
  1. # Шапка
  2. target = ' Hard.3 '
  3. print('\r\n' + 10 * '*' + ' Задача' + target + 10 * '*')
  4. print('')
  5.  
  6. # Ввод строки с предположительно номером квартиры
  7. while True:
  8.     room = input('Введите номер квартиры от 1 до 2000000000: ')
  9.     try:
  10.         room = int(room)
  11.         if room in range(1, 2000000001):
  12.             break
  13.         else:
  14.             raise ValueError
  15.     except ValueError:
  16.         print('Некорректный ввод!')
  17.  
  18. # Работа алгоритма
  19. # Башня разбивается на блоки с одинаковым количеством квартир на этаже
  20.  
  21. # Список  квартир с наибольшим номером в каждом блоке. Дина списка=кол-ву блоков
  22. list_last_room_in_sqare = []
  23.  
  24.  
  25. # Вычисление список  квартир с наибольшим номером в каждом блоке
  26. k = 1
  27. d = 0
  28. ssq = 0
  29. while ssq < 2000000000:
  30.     d += k
  31.     ssq += d
  32.     k += 2
  33.     list_last_room_in_sqare.append(ssq)
  34. print('\r\nЭтапы расчета:\r\n' + '-'*40)
  35. print('Всего квадратных блоков в башне: ' + str(len(list_last_room_in_sqare)))
  36. print('Максимальный номер квартиры в самом верхнем блоке: ' + str(ssq))
  37.  
  38. # Поиск блока в котором находится квартира и этажа, с которого начинается блок
  39. etage = 1
  40. sqare = 1
  41. first_room_in_sqare = 1
  42. last_room_in_sqare = 0
  43. for last_room_in_sqare in list_last_room_in_sqare:
  44.     if first_room_in_sqare <= room <= last_room_in_sqare:
  45.         break
  46.     first_room_in_sqare = last_room_in_sqare + 1
  47.     etage += sqare
  48.     sqare += 1
  49. print('Квартира №{} находится в блоке №{} размером {}х{} с номерами квартир от {} до {}'.format(room, sqare, sqare, sqare, first_room_in_sqare, last_room_in_sqare))
  50.  
  51.  
  52. # Смещение квартиры в блоке
  53. delta = room - first_room_in_sqare
  54. print('Смещение этажа в блоке: ' + str(int(delta / sqare)))
  55. print('Смещение квартиры на этаже: ' + str(delta % sqare))
  56.  
  57. # Вывод результата
  58. print('\r\nРезультат:\r\n' + '-'*40)
  59. print('Квартира №{} находится на {} этаже, {} слева'.format(room, (etage+int(delta / sqare)), 1 + (delta % sqare)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement