Для каждого размера доски k от 1 до n посчитайте количество неупорядоченных пар различных клеток на доске k на k, на которых два коня не могут атаковать друг друга. Конь ходит на две клетки по одной оси и на одну по другой.
. x . x .
x . . . x
. . K . .
x . . . x
. x . x .K обозначает коня, а x — возможные клетки для хода, если они находятся на доске. Перестановка двух коней не считается новым размещением.
Реализуйте функцию two_knights(n).
Входные данные
n: Наибольший размер доски для рассмотрения.
Выходные данные
Верните n чисел по порядку — для размеров доски от 1 до n.
Ограничения
1 ≤ n ≤ 10 000. Все значения помещаются в знаковый 64-битный целый тип.
Примеры
Ввод:
n = 3
Ожидаемый вывод:
expected = [0, 6, 28]
Ввод:
long long n = 3;
Ожидаемый вывод:
std::vector<long long> expected = {0, 6, 28};
Ввод:
long n = 3;
Ожидаемый вывод:
long[] expected = new long[] {0, 6, 28};
Пояснение
На доске 1 × 1 невозможно разместить двух коней. На доске 2 × 2 есть шесть пар клеток, и ни одна из них не позволяет коням атаковать друг друга. На доске 3 × 3 — 36 пар, из которых в восьми случаях возможна атака, остаётся 28 безопасных размещений.
Ввод:
n = 1
Ожидаемый вывод:
expected = [0]
Ввод:
long long n = 1;
Ожидаемый вывод:
std::vector<long long> expected = {0};
Ввод:
long n = 1;
Ожидаемый вывод:
long[] expected = new long[] {0};
Пояснение
Требуются две различные клетки, но на доске только одна.
Ссылки
Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.