Задача A. Номер полуэскадрона можно найти так p = (n - 1) // 64 + 1 или так: if n < 64: p = 1 else: p = 2 Номер взвода v = (n - 1) // 32 + 1 или так: if n < 32: p = 1 elif n < 64: p = 2 elif n < 96: p = 3 else: p = 4 Номер ряда в взводе r = (n - 1) % 32 // 2 + 1 Номер шеренги sh = (n - 1) % 2 + 1 Задача B. По горизонтали ферзь может переместиться на n - 1 клетку (кроме той, на которой он уже стоит). По вертикали ферзь может переместиться на m - 1 клетку (аналогично). По диагонали "вниз-влево" ферзь может переместиться на минимальное из чисел a - 1 и b - 1. По диагонали "вниз-вправо" ферзь может переместиться на минимальное из чисел b - 1 и n - a. По диагонали "вверх-влево" ферзь может переместиться на минимальное из чисел a - 1 и m - b. По диагонали "вниз-вправо" ферзь может переместиться на минимальное из чисел n - a и m - b. Найдём сумму полученных шести чисел. Задача C. Необходимо избавится от всех удвоений сторон, то есть убрать из разложения числа n все множители-двойки. while n % 2 == 0: n //= 2 После этого нужно проверить, чему стало равно n. Если оно равно 1, 3 или 5 - значит ответ "Да", а если оно равно какому-нибудь простому числу, большему, чем 5, то ответ "Нет". if n < 6: ans = 'Yes' else: ans = 'No' Задача D. 15 символов, определяющих букву А, выглядят так: a = '.#.#.##.#####.#' (слева направо, сверху вниз). Для буквы Б строка-образец будет такой: b = '####..####.####'. Далее считываем 15 символов из входных данных в строку c и за один проход находим количество несовпадений для обоих образцов. count_a = 0 count_b = 0 for i in range(15): if c[i] != a[i]: count_a += 1 if c[i] != b[i]: count_b += 1 Осталось проверить, какой из двух счетчиков несовпадений меньше (если count_a < count_b, то выводим в первой строке 1, а во второй - значение count_a, иначе выводим в первой строке 2, а во второй - значение count_b.