Задачи

Задача 3а. [1.3.2, стр.81, sumzero.c]
Нека са дадени числата a1, a2, ..., an. Да се поставят операции "+" и "-" между числата ai  и ai+1 за i = 1, 2,  ..., n-1 така, че резултатът след пресмятане на получения израз да бъде равен на зададено число b (1 < n < 20).

Вход:
На входа се задават редици от n + 1 числа a1, a2, ..., an, b - всяка редица на отделен ред. Всички числа са цели в интервала [1, 1000].

Изход:

За всяка редица от входа се отпечатва един израз със стойност b. Ако не може да се получи тази стойност,  да се остави празен ред.

Примерен вход:
1 1 0
1 2 3 4 5 6 7 8 0
3 4 2
30 20 40 10

Решение за примерния вход:
1-1=0
1+2+3+4-5-6-7+8=0

30+20-40=10

Задача 3b. Да се напише програма, която намира броя на простите числа в случайно генерирана редица.

Вход:
На стандартния вход са зададени не повече от 100 примери. Всеки пример се определя с две положителни цели числа s и N на един ред (s < 103, N < 109). s определя числова редица (чрез srand(s)) с дължина N, която се генерира с rand()%1000.

Изход:
Извежда се намерения брой - за всеки пример на отделен ред.

Пример:
25 10
102 10000


Решение на примера:
3
1616


Забележка: 0 и 1 не се броят за прости числа.
Упътване: Използвайте идеята на Решето на Ератостен. Обсъжданият в часа алгоритъм е много бавен за исканата дължина на редицата. Определянето дали числото е просто трябва да става за време O(1).