Научный форум dxdy
Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе «Помогите решить/разобраться (М)».
Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.
Не ищите на этом форуме халяву , правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.
Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.
Можно ли определить количество треугольников, не считая их?
Можно ли определить количество треугольников, не считая их?
29.08.2015, 17:14
Последний раз редактировалось Dyndyk 29.08.2015, 17:15, всего редактировалось 1 раз.
Типовое задание из школьного курса математики. Приведена симметричная фигура из множества треугольников, стоит задача определить, сколько всего треугольников изображено на рисунке.
Я всегда решал подобные задачи обычным подсчётом треугольников, что довольно утомительно и не всегда эффективно. Существуют ли более элегантные варианты решения подобных заданий?
Re: Можно ли определить количество треугольников, не считая их?
29.08.2015, 18:11
| Заслуженный участник |
Боюсь, для каждой фигуры ответ немного свой.
Например, для треугольников типа такого ↓

составляющие треугольники все равносторонние двух ориентаций (как у оранжевого и как у зелёного) и число треугольников одного размера и ориентации считается несложно, так что и общее число — тоже.
А если фигура нерегулярна…
Кстати, в подобных задачах ведь не обязательно треугольники считают. Попробуйте посчитать, сколько на рисунке ↑ ромбов, параллелограммов (ромбы включаются), трапеций (параллелограммы включаются) или шестиугольников.
Анализ алгоритма

Обозначим через Tn количество точек в нем ( назовем Tn треугольными числами ) . По сумме арифметической прогрессии Tn = n (n + 1) / 2.
Подсчитаем сначала количество треугольников с вершиной вверх. Каждая жирная точка на исходном треугольнике является вершиной некоторого меньшего треугольника.
Количество треугольников со стороной 1 равно Tn .
Количество треугольников со стороной 2 равно Tn -1 .
Количество треугольников со стороной n равно T 1 .
Теперь подсчитаем количество треугольников с вершиной вниз.
Количество треугольников со стороной 1 равно Tn -1 .
Количество треугольников со стороной 2 равно Tn -3 .
Количество треугольников со стороной 3 равно Tn -5 .
Количество треугольников со стороной n равно 0 .
Реализация алгоритма
Объявим рабочий массив.
#define MAX 1000010
long long s[MAX][2];
Вычисление значения Tn = n (n + 1) / 2.
long long T( long long n)
return n * (n + 1) / 2;
Основная часть программы. Инициализируем и затем вычисляем значения и .
Читаем входные данные и выводим ответ.
printf( «%lld\n» ,s[n][0] + s[n][1]);
Как посчитать количество треугольников в треугольнике
Здравствуйте Опять задали непонятную задачку на делфе
Помогите пожалуйста,друзья,не просто сухой исходник,а с более-менее комментами,а то с той задачей вышло так что решить решил,а обьяснить не смог и так глупо выглядел
Вот задание:
Фигурой первоrо уровня назовем обычный равносторонний треугольник. Фигура i-го
уровня получается из фигуры (i-1)-ro уровня следующим образом. Каждый из маленьких равносторонних треугольников, кроме треугольников, образованных средними линиями треугольника большего размера, разбивается на 4 равносторонних треугольника с вдвое меньшей стороной. На рисунке изображены фигуры первого, второго и третьего уровней.
Напишите программу, которая будет вычислять, сколько всего треугольников содержит фигура n-го уровня (необходимо учитывать не только `’маленькие» треугольники,а вообще все треугольники — в частности, треугольник, выделенный на рисунке жирными линиями).
Возможно есть ошибки в грамматике(быстро печатал)
Рисунок вооон там
http://otlishnik.com/ чудесный портал для всех кто учится . Рефераты, каталоГ вузов, решебники, справочники, ЕГЭ ! Welcome
Последний раз редактировалось Marsik; 29.01.2008 в 15:06 .
Участник клуба
Регистрация: 02.09.2007
Сообщений: 1,193
Посмотри здесь http://www.xaoc.ru/index.php?option=. id=52&Itemid=0 тут есть готовая программа, либо ищи «Ковер Серпинского» или «треугольник Серпинского»
Форумчанин Подтвердите свой е-майл
Регистрация: 01.11.2006
Сообщений: 420
1-й: 2^0
2-й: 2^0 + 2^2
3-й: 2^0 + 2^2 + 2^4
.
2^0 + 2^2 + 2^4 + . + 2^(2n)
Это если учитывать треугольник, образованный средними линиями треугольника большего размера
а если не учитывать
1-й: 1
2-й: 1*3 + 2 = 5
3-й: 5*3 + 2 =53
4-й: 53*3 + 2 = 161
.
n-й: «n-1»*3 + 2 = ?
Обычная рекуррентная последовательность.
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
| Похожие темы | ||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| Посчитать количество записей в БД ACCESS | Dux | БД в Delphi | 22 | 31.03.2015 20:36 |
| как посчитать количество файлов в каталоге? помогите плиз | older | Общие вопросы Delphi | 5 | 23.05.2008 14:22 |
| Паскаль. найти все числа кратные трем и посчитать их количество | __k1ll3r__ | Помощь студентам | 6 | 02.04.2008 16:37 |
Корневая в задачах на графы
Назовем $\textit$ вершину, имеющую более $\sqrt$ соседей. Все оставшиеся вершины назовем $\textit$.
Утверждение:
В графе не более $2 \cdot \sqrt$ тяжелых вершин.
Доказательство:
Пусть в графе более $2 \cdot \sqrt$ тяжелых вершин. Тогда число ребер в графе больше, чем $\frac <2 \cdot \sqrt\cdot \sqrt> = E$, чего не может быть.
Нахождение количества треугольников в графе за $O(E \sqrt E)$
Мысленно разобьем все вершины графа на легкие и тяжелые. Заметим, что треугольников, образованных только тяжелыми вершинами, всего $O(E\sqrt)$, как $C^3_<\sqrt>$. Теперь рассмотрим треугольники, которые содержат в себе легкие вершины. В таком треугольнике точно будут два ребра, инцидентных легкой вершине. Сколько таких пар может быть? Всего таких ребер $O(E)$, при этом для каждого ребра парными могут быть только $O(\sqrt)$ ребер, в силу степени легкой вершины. Таким образом, \textit $O(E \sqrt)$. Каким алгоритмом их искать? Можно явно провести процесс, описанный выше, но это не самое приятное в реализации решение этой задачи.
Можно переориентировать ребра от вершин с меньшей степенью к вершинам с большей. Теперь верно следующее
Утверждение:
Из каждой вершины выходит не более $O(\sqrt E)$ ребер
Доказательство:
Степень легких вершин $O(\sqrt E)$, а из тяжелых вершин ребра идут только в тяжелые, которых всего $O(\sqrt E)$.
Теперь для каждой вершины пометим ее соседей, после чего запустим поиск путей длины 2 и будем фиксировать треугольник при нахождении пометки. Для каждого первого ребра пути мы посмотрим на $O(\sqrt E)$ ребер, поэтому итоговая сложность алгоритма $O(E \sqrt E)$
Автор конспекта: Константин Амеличев
По всем вопросам пишите в telegram @kik0s