С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 25.10.2020
Сообщений: 25

Карточные пирамиды

29.11.2020, 21:57. Показов 3002. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите решить задачу:
Карточная пирамида высоты 1 может быть построена с помощью двух карт, приставленных друг к другу. Для h>1 карточная пирамида высоты h может быть построена расположением карточной пирамиды высоты h−1 на базе. База состоит из h пирамидок высоты 1, поставленных в ряд, и h−1 карты, лежащей сверху на них. Например, карточные пирамиды с высотами 1, 2 и 3 выглядят следующим образом:


Изначально у вас есть n карт и вы строите как можно более высокую пирамиду из этих карт. Если остались лишние карты, вы снова строите как можно более высокую пирамиду из оставшихся карт. Вы продолжаете этот процесс до тих пор, пока не станет невозможно построить какую-нибудь пирамиду. Сколько карточных пирамид вы построите?

Входные данные
Каждый тест состоит из нескольких тестовых случаев. Первая строка содержит единственное целое число t (1≤t≤1000) — количество тестовых случаев. Следующие t строк содержат описания тестовых случаев.

Единственная строка описания каждого тестового случая содержит единственное целое число n (1≤n≤109) — количество карт.

Гарантируется, что сумма значений n по всем тестовым случаям не превосходит 109.

Выходные данные
Для каждого тестового случая выведите единственное целое число — количество карточных пирамид, которое вы построите в конце процесса.

Пример
входные данные
5
3
14
15
24
1
выходные данные
1
2
1
3
0
Примечание
В первом тестовом случае вы построите карточную пирамиду высоты 1 из 2-x карт. Останется 1 карта, которой недостаточно, чтобы построить какую-нибудь пирамиду.

Во втором тестовом случае вы построите две пирамиды, каждая высоты 2, и в конце процесса не останется карт.

В третьем тестовом случае вы построите одну пирамиду высоты 3, и ни одной карты не останется.

В четвертом тестовом случае вы сначала построите одну пирамиду высоты 3, и 9 карт останется. Затем вы построите пирамиду высоты 2, и 2 карты останется. Наконец, вы построите последнюю пирамиду высоты 1, и не останется ни одной карты.

В пятом тестовом случае одной карты недостаточно, чтобы построить какую-нибудь пирамиду.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.11.2020, 21:57
Ответы с готовыми решениями:

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

Спецсимволы - карточные масти
Кто подскажет, как их выводить в консоле правильно ?

Как мне выводить рандомные карточные символы(масти) а не цифры?
int main() { srand(time(NULL)); int q; int start = 0, ends = 0; cout << "Enter: " << endl; for (int h = 0; h < 3;...

1
863 / 513 / 215
Регистрация: 19.01.2019
Сообщений: 1,216
30.11.2020, 02:17
Лучший ответ Сообщение было отмечено Deliri как решение

Решение

Расскажу тебе сказку про карточный домик. Очевидно, что каждый следующий этаж - это количество карт с прошлого этажа + 3 * n - 1.
Code
1
2
3
4
1. 0 + 3 * 1 - 1 = 2
2. 2 + 3 * 2 - 1 = 7
3. 7 + 3 * 3 - 1 = 15
...
Т.е. можно посчитать так: c = 3 * (1 + 2 + ... + n) - n = 3 * (n * (n + 1) / 2) - n = n * (3 * n + 1) / 2, где с - это количество необходимых карт.
Выглядит как квадратное уравнение. 3n^2 + n - 2c = 0.
Осталось взять какое-нибудь с, решить уравнение (n = (-b + sqrt(b^2 - 4ac)) / 2a), где n = целая часть положительного корня, пересчитать с (c -= n * (3 * n + 1) / 2). Продолжать, пока n >= 1, увеличивая счётчик домиков.
Код напиши сам. Всего хорошего.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.11.2020, 02:17
Помогаю со студенческими работами здесь

Пирамиды
#include <iostream> #include <vector> using namespace std; template <class T> void prepare_vector(vector<T> *v) { ...

треугольные пирамиды
помогите пожалуйста написать программу. вот задание: На вход подается некоторое количество треугольных пирамид (координаты вершин)....

Построение пирамиды из символов x
Доброго времени суток! Есть задание и чето у меня ничего не получается, выручайте! :-| При помощи цикла for изобразите на экране...

Вращение усеченной пирамиды
Добрый день, заранее скажу причину по которой пишу - болел, долго. А надо сдать вращение усечённой пирамиды. Код есть, просто надо заменить...

движение пирамиды по кругу
Пожалуста помогите сделать программу которая заставляла пирамиду двигалась по кругу. Зарание Всем спасибо:)


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru