Задать вопрос

Сколько треугольников на картинке?

be2ddc49554e47798caa52830b895799.png

Как, зная длину стороны такого треугольника, найти число изображенных треугольников (для примера выше ответ 13)?
  • Вопрос задан
  • 12742 просмотра
Подписаться 7 Оценить 4 комментария
Решения вопроса 2
qmax
@qmax
программер
ДЛЯ ПОТОМКОВ: не верьте всему, что пишут в интернетах! это решение неправильное!

При увеличении стороны треугольника на 1
C(i+1) =
C(i) /* все треугольники предыдущей фигуры (которая со стороной i) */
+ 2i+1 /* треугольники со стороной 1, пририсованные к одной из сторон предыдущей фигуры*/
+ i /* треугольники со стороной 2 накладывающиеся на предыдущую на 1 */
+ i-1 /* треугольники со стороной 3 накладывающиеся на предыдущую на 2*/
+ i-2 /* треугольники со стороной 4 накладывающиеся на предыдущую на 3*/
+ итд до нуля (тоесть до i-i)
Ответ написан
0neS
@0neS Автор вопроса
По алгоритму @qmax написал функцию:

function countTriangles($sideLength) {
    $count = 0;
    for ($i = 0; $i < $sideLength; $i++) {
        $count += (2 * $i) + 1;
        for ($j = 0; $j < $i; $j++)
            $count += $i - $j;
    }
    return $count;
}

Вроде бы работает правильно.

График (длина стороны от 0 до 100):

30917f40ce024d368738b7390c989543.png
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Lerg
@Lerg
Defold, Corona, Lua, GameDev
Интересно посмотреть на график такой зависимости.
Ответ написан
Mrrl
@Mrrl
Заводчик кардиганов
Если искать ответ в виде формулы - то [n*(n+2)*(2*n+1)/8]
Там для чётных и нечётных n получаются разные серии, поэтому приходится брать целую часть (или мудрить с (-1)^n).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы