Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1198 / 767 / 128
Регистрация: 10.03.2012
Сообщений: 4,957

Перевернутая башня

24.02.2023, 13:08. Показов 1354. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вавилонцы решили построить удивительную башню - расширяющуюся кверху и содержащую бесконечное число этажей и комнат. Она устроена следующим образом - на первом этаже одна комната, затем идет два этажа на каждом из которых по две комнаты, затем идёт три этажа, на каждом из которых по три комнаты и так далее:
... ... ...
15 16 17 18
12 13 14
9 10 11
6 7 8
4 5
2 3
1
Эту башню решили оборудовать лифтом - и вот задача: нужно научится по номеру комнаты определять, на каком этаже она находится и какая она по счету слева на этом этаже. Дано целое число - номер комнаты. Вывести два целых числа — номер этажа и ее порядковый номер слева на этаже.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.02.2023, 13:08
Ответы с готовыми решениями:

Останкинская башня
Останкинская телебашня вещает в эфир радиоволны дециметрового диапазона. Дальность приёма в условиях прямой видимости вычисляется по...

Башня Бурана
Здравствуйте. Помогите,пж,решить задачу: Бурана ограничение по времени на тест 0.5 секунд ограничение по памяти на тест 256...

Решение задачи "Ханойская башня" на 64 диска через if и for
Доброго времени суток! Не подскажете, как можно написать код, который смог бы выполнить задачу про ханойские башни без использования...

12
6 / 3 / 3
Регистрация: 24.02.2023
Сообщений: 8
24.02.2023, 16:38
Для решения этой задачи необходимо определить формулы для вычисления номера этажа и порядкового номера комнаты слева на этаже по ее номеру.

Для вычисления номера этажа можно воспользоваться следующей формулой:
floor(sqrt(2n - 1/4) - 1/2)
где n - номер комнаты, floor - функция округления до ближайшего целого в меньшую сторону.

Для вычисления порядкового номера комнаты слева на этаже можно воспользоваться следующей формулой:
n - (k^2 - k + 1)
где n - номер комнаты, k - номер этажа по формуле выше.

Например, для номера комнаты 17:
k = floor(sqrt(2 * 17 - 1/4) - 1/2) = 4
порядковый номер комнаты на этаже:
17 - (4^2 - 4 + 1) = 6
Таким образом, комната с номером 17 находится на 5 этаже (последний этаж с 5 комнатами), и является шестой слева на этом этаже.

Для более общего случая, решение может быть записано в виде функции на языке программирования, например, на Python:

Python
1
2
3
4
5
6
7
import math
 
def elevator(n):
    k = math.floor(math.sqrt(2 * n - 1/4) - 1/2)
    floor = k + 1
    room = n - (k**2 - k + 1)
    return (floor, room)
где n - номер комнаты, а функция elevator(n) возвращает кортеж из двух целых чисел: номер этажа и порядковый номер комнаты слева на этаже.
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
24.02.2023, 18:32
Цитата Сообщение от titovmark97 Посмотреть сообщение
Таким образом, комната с номером 17 находится на 5 этаже (последний этаж с 5 комнатами), и является шестой слева на этом этаже.
Но вот мы смотрим на пример из первого поста и явно видим там, что комната 17 это третья комната на седьмом этаже (а седьмой этаж это первый из этажей с 4 комнатами).
Что-то не сходится.

Добавлено через 5 минут
Да и функция немножко расходится с описанием:
Python
1
2
3
4
5
6
7
8
9
10
11
In [26]: import math
    ...: 
    ...: 
    ...: def elevator(n):
    ...:     k = math.floor(math.sqrt(2 * n - 1 / 4) - 1 / 2)
    ...:     floor = k + 1
    ...:     room = n - (k**2 - k + 1)
    ...:     return (floor, room)
 
In [27]: elevator(17)
Out[27]: (6, -4)
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
24.02.2023, 18:39
Если номер квартиры не слишком большой:
Python
1
2
3
4
5
6
7
8
9
ap = 1234567890
n = 1
floor = 0
while ap >  n*n:
    floor += n
    ap -= n*n
    n += 1
 
print(floor + (ap + n - 1)//n, ap%n or n)
0
1198 / 767 / 128
Регистрация: 10.03.2012
Сообщений: 4,957
24.02.2023, 19:46  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
N = 10003423
floor = 1
room = 1
answer_floor = 0
answer_room = None
while N > 0:
    for current_floor in range(floor):
        answer_floor += 1
    for current_room in range(room):
        N -= 1
        if N == 0:
            answer_room = current_room + 1
            break
        if N == 0:
            break
        floor += 1
        room += 1
print(answer_floor, answer_room)
0
Вирусоборец
 Аватар для thyrex
14450 / 7489 / 1582
Регистрация: 06.09.2009
Сообщений: 27,133
24.02.2023, 19:58
Whitecolor, а теперь сравните время работы своего алгоритма и алгоритма от Gdez на примере N = 1234567890. Не говоря уже о ещё больших числах.
0
1198 / 767 / 128
Регистрация: 10.03.2012
Сообщений: 4,957
24.02.2023, 20:01  [ТС]
thyrex, я не говорил, что это решение является идеальным
0
Вирусоборец
 Аватар для thyrex
14450 / 7489 / 1582
Регистрация: 06.09.2009
Сообщений: 27,133
24.02.2023, 20:06
Whitecolor, какой вообще смысл в том, что после идеальных и быстрых решений, которые предлагаются в созданных Вами же темах, Вы зачем-то выкладываете некое своё (иногда даже несколько). Попытка набить сообщения и репутацию?
0
1198 / 767 / 128
Регистрация: 10.03.2012
Сообщений: 4,957
24.02.2023, 20:40  [ТС]
Цитата Сообщение от thyrex Посмотреть сообщение
Вы зачем-то выкладываете некое своё (иногда даже несколько).
Пускай будет, может оно тоже кому-то пригодиться!!

Не по теме:

Это Вы уже себе набили почти 25 тысяч сообщений таким вопросами зачем то, почему это!!

0
24.02.2023, 21:10

Не по теме:

Цитата Сообщение от Whitecolor Посмотреть сообщение
Это Вы уже себе набили почти 25 тысяч сообщений таким вопросами зачем то, почему это!!
Да будет Вам известно - основная масса моих сообщений в совершенно ином разделе

0
1198 / 767 / 128
Регистрация: 10.03.2012
Сообщений: 4,957
24.02.2023, 21:18  [ТС]
Цитата Сообщение от thyrex Посмотреть сообщение
Да будет Вам известно - основная масса моих сообщений в совершенно ином разделе

Не по теме:

Хорошо, я учту, если будет в этом потребность

0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
25.02.2023, 07:30
Цитата Сообщение от thyrex Посмотреть сообщение
после идеальных и быстрых решений
Решение Gdez не идеальное. Хорошая попытка была в первом посте, но видимо там магнитная буря произошла и в мозгах ИИ случился сбой, а передаст, увы, даже понять не захотел.
Whitecolor, приятно видеть, что человек участвует в своей теме, приводит собственные попытки (особенно если свои, а не загугленные), пусть даже не идеальные.

Добавлено через 9 минут
Было бы еще лучше, если бы давали дополнительно оценку своему коду, с учетом уже приведенных ранее. Возможно и подобных недоразумений не было бы.
1
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
25.02.2023, 08:29
thyrex, а кто предложил идеальное решение? я не вижу решений в этой теме.

Не по теме:

Whitecolor, ну вот молодец. начал решать более менее задачи по сложнее.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.02.2023, 08:29
Помогаю со студенческими работами здесь

Башня
Петя в очередной раз купил себе набор из кубиков. На этот раз он выстроил из них настоящую крепость — последовательность из N столбиков,...

Башня
Вот сейчас думаю, не могу решить следующую задачу: Петя в очередной раз купил себе набор из кубиков. На этот раз он выстроил из них...

Ханойская башня
Уважаемые, киберфорумчане! Не знаю уже к кому идти, никак не решатся задачи. Весь гугл прочесан вдоль и поперек. Классическую интерпретацию...

Задача "Башня"
Башня Петя в очередной раз купил себе набор из кубиков. На этот раз он выстроил из них настоящую крепость — последовательность из N...

Перевернутая таблица
Как можно первернуть таблицу, с помощью какого компонента? У нас поля таблицы идут сверху, записи слева. А мне необходимо наоборот. Слева...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru