This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <iterator> | |
using namespace std; | |
int CountThrows(int stairs) | |
{ | |
if (stairs < 1) // Для дома из 0 этажей решение очевидно. | |
return 0; | |
else if (stairs == 1) // Бросок с первого этажа. | |
return 1; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <vector> | |
#include <VectorUtils> // my own lib, for `operator<<(const std::vector<T>&)` | |
/* https://t.me/unilecs | |
* Задача 148. | |
* Перенести нулевые элементы в конец массива, не меняя порядок ненулевых элементов. | |
* Дополнительное условие - inplace-метод, дополнительную память использовать нельзя. | |
* | |
* Решение топорное. Мы просто идем с начала массива и затираем нулевые элементы ближайшими справа ненулевыми. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
void foo(int *a, size_t n) | |
{ | |
if (!a || !n) | |
return; | |
int first = 0, last = 0; | |
int first_ = 0, last_ = 0; | |
for (size_t i = 1; i < n; ++i) | |
{ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from math import sin, cos, atan2, pi | |
def print_params(i, t, x, y, vx, vy): | |
print('''Step {}:\ | |
\ttime = {:.3f} sec,\ | |
\tx = {:.3f} m,\ | |
\ty = {:.3f} m,\ | |
\tvx = {:.3f} m/s,\ | |
\tvy = {:.3f} m/s,\ | |
\tv = {:.3f} m/s,\ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/**https://t.me/unilecs | |
Задача 144. Найти количество способов разложения натурального числа N на слагаемые, на превышающие K. | |
Способы, отличающиеся порядком слагаемых, считать различными. | |
Решение основано на рекурсивном подходе. | |
Мы заводим массив слагаемых `numbers` - очевидно, он будет иметь размерность N (N единиц-слагаемых максимум). | |
Далее работаем с этим массивом, начиная с первого слагаемого, следующим образом: | |
- мы заполняем текущую ячейку единицей и рекурсивно решаем задачу для входных данных (N-1) и K; | |
- после получения решения для единицы ставим на ее место двойку и рекурсивно решаем задачу для (N-2) и K; | |
- ... |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'''https://t.me/unilecs | |
Задача 143. Построить пирамиду заданной высоты из натуральных чисел, расположенных по спирали. | |
Ничего сложного - создаем пустую матрицу. Выставляем границы. | |
А дальше - внимательная игра с индексами. | |
Для удобства основание пирамиды совпадает с верхней границей матрицы. | |
Три цикла счетчика - по основанию матрицы, по правой границе и по диагонали. | |
Для печати выполнена процедура, выдающая на печать только ненулевые элементы матрицы. | |
Самому стыдно за такое сырое решение, прошу на ревью не выносить. =) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Решение: | |
Последние цифры элементов степенного ряда повторяются и в сумме дают 0 на конце: | |
{7, 9, 3, 1}. | |
Значит, у нас есть цикличность с периодом в четыре элемента. Первая четверка: | |
7^1 + 7^2 + 7^3 + 7^4 = 2800. | |
Преобразуем ряд, вынеся эту четверку за скобки: | |
7^1 + 7^2 + ... + 7^100 = | |
= (7^1 + 7^2 + 7^3 + 7^4) * (1 + 7^4 + 7^8 + ... + 7^96) = | |
= 2800 * (1 + 7^4 + 7^8 + ... + 7^96). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'''https://t.me/unilecs | |
0. Принимаем кортеж чисел; | |
1. Ищем максимальное по длине; | |
2. Среди чисел, длина которых равна максимальной, ищем лексикографически максимальное. | |
''' | |
def task142(*numbers): | |
max_length = len(max(numbers, key=len)) | |
return max(number for number in numbers if len(number) == max_length) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'''https://t.me/unilecs | |
Задача 141. Определить количество выигрышных направлений для заданного лотерейного билета. | |
Лотерейный билет представляет собой прямоугольную числовую матрицу. | |
Для каждой клетки существуют четыре направления: вверх, вниз, влево, вправо. | |
Направление считается выигрышным для данной клетки, если в этом направлении нет чисел, больших числа в клетке или равных ему. | |
Если выбрана клетка на границе лотерейного билета, то направление к границе автоматически считается выигрышным. | |
Необходимо определить количество выигрышных направлений для заданного лотерейного билета. | |
''' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'''https://t.me/unilecs | |
Задача 140. Определить, задает ли строка возможный ход шахматного коня. | |
Задача простая, решение тоже. | |
Перво-наперво валидируем полученную строку. Она должна разбиваться дефисом на два двухсимвольных токена, | |
каждый из которых состоит из буквы и цифры. Буква может быть только в диапазоне 'abcdefgh', цифра - в '12345678'. | |
Затем мы считаем разность между буквами и разность между цифрами с помощью ASCII-кода символов. | |
Ход шахматного коня имеет структуру - два поля в одном направлении и одно поле в другом. | |
Проверяем две полученные разности на соответствие одному из кортежей (1, 2) или (2, 1). | |
Получаем ответ. |