Как это количество зависит от длины стороны основного треугольника? Или ты имеешь ввиду, что сторона большого треугольника измерятся в длинах маленьких?
Точная формула тут, но мне понравился функциональный ответ моего коллеги: private static int size(int n) { return rangeClosed(1, n) .map(m -> rangeClosed(1, n - m + 1).sum() + rangeClosed(1, n - 2 * m + 1).sum() ).sum(); }
Круто, для чётных получается: 1/4 * х3 + 5/8 * х2 + 1/4 * х Основная хитрость была в том, чтобы разделить на чётные и нечетные, и их обрабатывать по-отдельности.
Хотя, чувствую, что мой матаапарат не подготовлен, чтобы понять, почему это так и объяснить своему сыну ;)
Есть у меня формула, но я её не скажу, стыдно...
ОтветитьУдалитьОна, скорее, не формула, а алгоритм ;)
Нам, как программистам, написать алгоритм проще, но тут интересна формула.
УдалитьПолином четвёртой степени типа
Удалить-1/24 * х4 + 7/12 * х3 + 13/24 * х2 + 35/12 * х + 1 так же не дает правильного ответа ;)
Такое ощущение ,что пониноминальная функция тут не поможет
Наверное, я туплю, но я что-то задания не понял.
ОтветитьУдалитьНа рисунке треугольник со стороной 3 содержит 1 большой, 3 средних и 9 маленьких.
УдалитьЭтот комментарий был удален автором.
УдалитьКак это количество зависит от длины стороны основного треугольника? Или ты имеешь ввиду, что сторона большого треугольника измерятся в длинах маленьких?
УдалитьДа, маленькие треугольники со стороной 1, средние - 2, а большие 3. Ну и так далее с ростом n.
УдалитьТочная формула тут, но мне понравился функциональный ответ моего коллеги:
ОтветитьУдалитьprivate static int size(int n) {
return rangeClosed(1, n)
.map(m ->
rangeClosed(1, n - m + 1).sum() +
rangeClosed(1, n - 2 * m + 1).sum()
).sum();
}
Круто, для чётных получается:
Удалить1/4 * х3 + 5/8 * х2 + 1/4 * х
Основная хитрость была в том, чтобы разделить на чётные и нечетные, и их обрабатывать по-отдельности.
Хотя, чувствую, что мой матаапарат не подготовлен, чтобы понять, почему это так и объяснить своему сыну ;)