Все задачи
Средне Решено: 0 Процент решений: 0%

Два неатакующих коня

Посчитайте количество безопасных размещений двух коней для каждой квадратной доски заданного размера.

Для каждого размера доски 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-битный целый тип.

Примеры

Пример 1
Ввод:
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 безопасных размещений.

Пример 2
Ввод:
n = 1

Ожидаемый вывод:
expected = [0]
Ввод:
long long n = 1;

Ожидаемый вывод:
std::vector<long long> expected = {0};
Ввод:
long n = 1;

Ожидаемый вывод:
long[] expected = new long[] {0};

Пояснение

Требуются две различные клетки, но на доске только одна.

Ссылки

Это задание адаптировано для CodeUtility. Следуйте условию и ограничениям выше.

Учитесь у других

Решения сообщества

Пока нет опубликованных решений. Решите задание, чтобы поделиться первым.