Задачи на битовые операции и работу с множествами
a) Посчитать число единичных битов числа
b) Из числа можно получить строку - его битовую записать без ведущих нулей.
Нужно проверить, входит ли одно число в другое, как подстрока. (Числа беззнаковые, 32-битовые)
c) Дано N (1 <= N <= 20) камней, даны их веса - w[i], i=1..N. Нужно разбить камни на 2 кучки одинакого веса.
d) Дано N (1 <= N <= 20) камней (камни драгоценные) и рюкзак размера M, даны их веса и стоимости - w[i], s[i] (N пар чисел),
нужно выбрать подмножество камней, которое влезают в рюкзак и имеет максимальную суммарную стоимость
e) Дано N (1 <= N <= 12) камней, даны их веса - w[i], i=1..N. Нужно выбрать 2 непересекающихся подмножества камней,
имеющих наиболее близкие суммы весов (|S1-S2|=min)
Зачётная задача :-)
Даны числа N и M (1 <= N, M <= 20), N - число рабочих, M - число работ.
А еще дана матрица A размера N (строк) x M (столбцов) из 0 и 1 - для каждого рабочего, какие работы он умеет выполнять.
Нужно выбрать минимальное по числу рабочих подмножество рабочих, которые в совокупности смогут выполнить все работы
[принимаются решения за O(N*2^N) и O(2^N)]

Задачи на геометрию
a) Даны 2 окружности, окружность задается центром и радиусом. Найти расстояние между окружностями.
b) Даны 2 прямые, прямая задается 2-мя различными точками на этой прямой. Найти точку пересечения прямых.
с) Даны точка и прямая (прямая задается 2-мя точками). Найти точку падения перпендикуляра из точки на прямую.
d) Дан выпуклый N-угольник (число N (1 <= N <= 100) и N точек). Найти площадь.
e) Дан треугольник. Найти точку пересечения медиан.
Зачётная задача :-)
Дан треугольник. Найти рассточние между точкой пересечения высот и точкой пересечения срединных перпендикуляров.

Задачи на подумать
a) Даны N (1 <= N <= 100) чисел от 1 до 10^5. Найти минимальное натуральное число, которое нельзя представить в виде суммы подмножества этих чисел.
Пример: N=3 6 1 2 --> 4
b) Дана кучка и з N (1 <= N <= 1000) камней. Двое играют в игру: за ход можно взять из кучки от 1 до K камней.
Кто возьмет последний, выигрывает. Вопрос, кто выиграет, при оптимальной игре обоих?
c) Тоже, что и (b), но из кучки за ход можно брать a[1],a[2],...,a[K] камней (даны числа K и a[i]). d) Даны N строк, состоящих из маленьких латинский букв. Нужно склеить их в каком-то порядке так,
чтобы результат был лексикографически минимален
e) New! [продолжение (a)] Добавить к набору несколько чисел (как можно меньше) так, чтобы можно было набрать все возможные суммы от 1 до S (1 <= S <= 10^9).

Задачи на длинную арифметику
a) сложить 2 целых числа (0 <= A, B <= 10^{100})
b) найти разность 2-х целых чисел (0 <= A, B <= 10^{100})
c) найти остаток от деления длинного числа A на котороткое число K (0 <= A <= 10^{100}, 0 <= K <= 1000)
d) перемножить 2 целых числа (0 <= A, B <= 10^{100})
Зачётная задача :-)
e) сложить 2 целых числа (-10^{100} <= A, B <= 10^{100})

Зачетные задачи по старым темам
1) Посчитать НОК всех чисел от 1 до n (n <= 24). Внимание, ответ не влезает в стандартный тип long!
2) Даны числа L и R (1 <= L, R <= 10^9). Посчитать число нулей на конце у произведения факториалов чисел от L до R.
3а) Найти число делителей числа. По формуле (a1+1)(a2+1)*...*(ak+1).
3б) Найти число от 1 до 10^9, у которого число делителей максимально (достаточно 500, максимум = 1344)
4) N ---> количество троек целых неотрицательных чисел a, b, c: a + b^2 + c^2 = N, 0 <= N <= 10^6
5) Даны три отрезка на прямой (6 целых чисел). Найти длину их объединения.
6) В каждом слове файла input.txt заменить все не первые буквы на маленькие (слово - последовательность английских букв).
Результат записать в файл output.txt
Пример:
To paSS_tHe    exam you neeD...Some intellegence. ----> To pass_the    exam you need...Some intellegence.

7) В городе живут N (1 <= N <= 100) людей. Для каждого человека известен точный рост - a[i] >= 0.
А еще есть K бонусов. У каждого бонуса есть ценность c[i] >= 0. Можно выбрать бонус i и раздать его всем людям с ростом x.
При этом каждый человек из группы получит бонус +c[i]. Каждый бонус можно дать только одной группе людей. Каждой группе людей можно дать только один бонус.
Нужно найти максимальный суммарный бонус, который может достаться людям.
Пример:
N=3 a={20,30,10,30} K=2 c={5, 3} => Суммарный бонус = 2*5+3 = 13

8) Нарисовать прямогольгик NxM, заполненный целыми числами от 1 до MN по спирали.
Пример:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

9) Дана строка S. Длина строки не больше 20. Выведите все различные подстроки строки.