Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/89: Рейтинг темы: голосов - 89, средняя оценка - 4.79
57 / 15 / 6
Регистрация: 08.08.2020
Сообщений: 266

Задача про кубики

13.09.2020, 20:50. Показов 18750. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста с кодом этой задачи:

Ване на день рождения подарили n кубиков. Он с друзьями решил построить из них пирамиду. Ваня хочет построить пирамиду следующим образом: на верхушке пирамиды должен находиться 1 кубик, на втором уровне — 1 + 2 = 3 кубика, на третьем — 1 + 2 + 3 = 6 кубиков, и так далее. Таким образом, на i-м уровне пирамиды должно располагаться 1 + 2 + ... + (i - 1) + i кубиков.

Ваня хочет узнать, пирамиду какой максимальной высоты он может создать с использованием имеющихся кубиков.

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

В первой строке записано целое число n (1 ≤ n ≤ 104) — количество кубиков, подаренных Ване.

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

Выведите единственной строкой максимально возможную высоту пирамиды.

Вот мой код:
Python
1
2
3
4
5
6
7
8
9
10
x=int(input())
i=0
j=0
while j<x:
  
  i=i+1     # Количество рядов
  j=j+i      #Количество выложенных кубиков
  if x-j<j+i: #здесь пытался создать условие при котором код останавливается если оставшееся количество кубиков не хватает на следующий ряд, но не работает.
    break
print(i)
вообщем не соображу как прервать код если оставшееся количество кубиков не хватает что бы сделать новый уровень в пирамиде. Аможет и весь код не правильно написан......По-мо-жи-те))
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.09.2020, 20:50
Ответы с готовыми решениями:

Про кубики
Ограничение времени 1 секунда Ограничение памяти 64Mb Ввод cube.in Вывод cube.out В одной из настольных игр игровой процесс...

Задача B. WALL-E и кубики
Помогите очень прошу!!) Задача B. WALL-E и кубики Робот WALL-E пытается упорядочить груду кубиков. В зоне его ответственности есть...

Ускорить код.Задача кубики
Всем привет. Решил задачу,но не проходит по скорости.Изменял около 5 раз, и оптимизировал максимум на что был способен(с подглядываниями в...

12
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
13.09.2020, 21:43
Python
1
2
x = int(input())
print(int(((8*x + 1) ** 0.5 - 1) // 2))
Добавлено через 22 минуты
А в вашем коде условие нужно:
Python
1
if x-i<=j:
1
57 / 15 / 6
Регистрация: 08.08.2020
Сообщений: 266
14.09.2020, 21:42  [ТС]
Код с вашим услрвием if не работпет к сожалению. При вводе числа 3, результат должен быть 1, у вас же он - 2.
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
14.09.2020, 21:45
3 = 1 + 2

Добавлено через 1 минуту
Понял уровни - 1, 3, 6 , 10 ...
Исправлю
0
57 / 15 / 6
Регистрация: 08.08.2020
Сообщений: 266
14.09.2020, 21:46  [ТС]
Не могу уловить логику вашего кода в print
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
14.09.2020, 22:36
Python
1
2
3
4
5
6
7
8
9
10
x=int(input())
i=0
j=0
while True:
  
  i=i+1     # Количество рядов
  j=j+i*(i+1)//2      #Количество выложенных кубиков в очередном ряде
  if x-j<(i+1)*(i+2)//2: #здесь пытался создать условие при котором код останавливается если оставшееся количество кубиков не хватает на следующий ряд, но не работает.
    break
print(i)
Добавлено через 30 секунд
Счас поправлю

Добавлено через 14 минут
Арифметически сложно - кубическое уравнение. Решение его в коде займет больше кода, чем ваш

Добавлено через 1 минуту
Мое решение (с print) для кубиков в уровнях = 1,2,3,4,5.... Т.е. в первом 1 кубик, во втором 2 и тд

Добавлено через 3 минуты
Общее количество кубиков в пирамиде из задачи x = i*(i+1)*(i+2)//6, где "i" - количество уровней в пирамиде
1
57 / 15 / 6
Регистрация: 08.08.2020
Сообщений: 266
15.09.2020, 07:56  [ТС]
Блииин, но она как то у других решилась быстро и легко(, я уже 4 дня мозг себе выношу
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
15.09.2020, 08:13
Gdez,
Цитата Сообщение от Gdez Посмотреть сообщение
Арифметически сложно - кубическое уравнение. Решение его в коде займет больше кода, чем ваш
Ну почему же, не так уж и много..
Python
1
2
3
4
5
6
7
8
def solution(x):
    var=( 3**(1/2)*(243*x*x-1)**(1/2)+27*x)**(1/3)
    res=var/(3**(2/3))+1/(3**(1/3)*var)-1
    y=int(res+1)
    if y*y*y+3*y*y+2*y<=6*x:
        return y
    else:
        return(y-1)
1
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
15.09.2020, 08:29
Я написал "больше")

Добавлено через 1 минуту
Zay, ваш "исправленный" код работает же
Python
1
2
3
4
5
6
7
8
9
10
x=int(input())
i=0
j=0
while True:
  
  i=i+1     # Количество рядов
  j=j+i*(i+1)//2      #Количество выложенных кубиков в очередном ряде
  if x-j<(i+1)*(i+2)//2: #здесь пытался создать условие при котором код останавливается если оставшееся количество кубиков не хватает на следующий ряд, но не работает.
    break
print(i)
Тут ничего сложного.
Ваша ошибка - ко "j" надо приплюсовывать не "i", а арифметическую прогрессию до "i". Отсюда по "j" кубическое уравнение
1
57 / 15 / 6
Регистрация: 08.08.2020
Сообщений: 266
15.09.2020, 13:14  [ТС]
Gdez, код не работает к сожалению

Добавлено через 1 минуту
Gdez, ваш последний код я имею ввиду
А функции мымещё не проходим поэтому припенять их нельзя)
0
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
15.09.2020, 13:43
Лучший ответ Сообщение было отмечено Zay как решение

Решение

Zay,
Эта?
https://codeforces.com/problem... ?locale=ru
Полное решение же этим кодом
Python
1
2
3
4
5
6
7
8
9
10
x=int(input())
i=0
j=0
while True:
  
  i=i+1     # Количество рядов
  j=j+i*(i+1)//2      #Количество выложенных кубиков в очередном ряде
  if x-j<(i+1)*(i+2)//2: #здесь пытался создать условие при котором код останавливается если оставшееся количество кубиков не хватает на следующий ряд, но не работает.
    break
print(i)
1
57 / 15 / 6
Регистрация: 08.08.2020
Сообщений: 266
15.09.2020, 15:33  [ТС]
Gdez, да, работает, спасибо большое, буду разбираться

Добавлено через 46 минут
Вот оно))
Python
1
2
3
4
5
6
7
8
x=int(input())
i=0
j=0
while j<=x:
  i=i+1     # Количество рядов
  j=j+i      #Количество выложенных кубиков
  x=x-j
print(i)
1
0 / 0 / 0
Регистрация: 31.12.2022
Сообщений: 1
31.12.2022, 20:15
x=int(input())
k=0 #кол-во кубиков в пирамиде
i=0 #кол-во слоев в пирамиде
while k<=x:
i+=1
k+=0.5*i*(i+1)
print(i-1)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.12.2022, 20:15
Помогаю со студенческими работами здесь

Задача про кубики
Условие: Имеется N кубиков. Стеной будем считать несколько столбиков из этих кубиков, расположенных рядом. Обозначим h - высотой i-го...

Задача про кубики
Есть столбики указанных размеров. Задание такое: Какое наименьшое количество перекладываний необходимо сделать, что бы высота 2х любых...

Задача про кубики и лесенки или Динамика с двумя параметрами.
Думал я думал, так и не придумал как реализовать эту задачу, даже нет идей... Родители подарили мальчику Пете очень много одинаковых...

Дан файл, который имеет содержание про кубики Найти кубики красного цвета с объемом больше 27 см кубических
Уважаемые форумчани. Первый раз прошу помощи такого рода. Но в жизни бывает разное. Вообщем нужно написать с десяток программ на паскале....

Про кубики
Всем привет. Какое из 2х событий более вероятно: А - при бросании четырех игральных костей выпадает хотя бы одна единица или Б - при 24...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru