2Помогите решить пожалуйста, на любом из этих языков Python 3,C++, PascalABC.NET, Java, C#, Go, Rust, PHP, КуМиР, Kotlin
Раскрашенный куб
Ограничение по времени: 1 секунда
Поверхность куба со стороной n см покрасили снаружи в синий цвет (со всех шести сторон). После этого его распилили на кубики со стороной 1 см. В результате получились части, у которых синим цветом окрашены 0, 1, 2 или 3 стороны. Посчитайте количество кубиков указанного вида.
Формат входных данных
Первая строка содержит натуральное число n (2≤n≤1000) — размер кубика.
Вторая строка содержит неотрицательное целое число f (0≤f≤3) — количество окрашенных граней у кубиков, число которых нужно посчитать.
Формат выходных данных
Выведите одно неотрицательное целое число — ответ на вопрос задачи. Гарантируется, что оно не превосходит 10 в 9 степени.
Система оценки
Решения, правильно работающие при f=0, будут оцениваться в 30 баллов.
Решения, правильно работающие при f=1, будут оцениваться в 30 баллов.
Решения, правильно работающие при f=2, будут оцениваться в 30 баллов.
Решения, правильно работающие при f=3, будут оцениваться в 10 баллов.
Пояснение
В примере дано n=3 и f=1. Рассмотрим рисунок: куб 3×3×3 покрасили и распилили на 3в 3 степени=27 маленьких кубиков. Требуется определить, сколько таких кубиков имеют единственную синюю грань.
Это кубики, расположенные посередине каждой из шести граней, их ровно шесть.
Ввод
3
1
Ввод
6
Забавно не то, что здесь задают этот вопрос, а то, что кто-то всерьёз пишет код, циклом решающий эту примитивную арифметическую задачу для начальной школы.
n = int(input()) - 2
print([n ** 3, 6 * n ** 2, 12 * n, 8][int(input())])
n = int(input())
f = int(input())
DP = [[0 for j in range(4)] for i in range(1001)]
DP[2][3] = 8
for i in range(3, n + 1):
DP[i][3] = DP[i - 1][3]
DP[i][2] = DP[i - 1][2] + 12
DP[i][1] = DP[i - 1][1] + DP[i - 1][2] + 6
DP[i][0] = DP[i - 1][0] + DP[i - 1][1] // 2 + DP[i - 1][2] // 4 + 1
print(DP[n][f])