Задачи за тренинг
Задача 3а. [1.3.2, стр.81, sumzero.c]
Нека са дадени числата a1,
a2, ..., an. Да се поставят
операции "+" и "-" между числата ai
и ai+1
за i = 1, 2, ..., n-1 така, че резултатът след
пресмятане на получения израз да бъде равен на 0 (1 < n < 30).
Вход:
На входа се задават редици от числа, всяка редица на отделен
ред. Всички числа са цели в интервала [1, 1000].
Изход:
За всяка редица от входа се отпечатват на отделни редове изразите със
сума 0. Празен ред разделя решенията за различните редици от входа.
Пример:
1 1
1 2 3 4 5 6 7 8
3 4
30 30 60
Решение на примера:
1-1=0
1+2+3+4-5-6-7+8=0
1+2+3-4+5-6+7-8=0
1+2-3+4+5+6-7-8=0
1+2-3-4-5-6+7+8=0
1-2+3-4-5+6-7+8=0
1-2-3+4+5-6-7+8=0
1-2-3+4-5+6+7-8=0
30+30-60=0
Задача 3b. [1.3.4, стр. 87, devnum3.c]
Да се намерят всички разбивания на дадена сума в лева на банкноти (500,
100, 50, 20, 10, 5, 2 лева).
Вход:
Задава се редица цели положителни числа (< 10000 лева) -
дадените суми.
Изход:
За всеки елемент на редицата се извежда число - броят на всички
възможни разбивания.
Пример:
25 11 10
Решение на примера:
7 1 3
Обосновка: 20+5, 10+10+5, 10+5+5+5, 5+5+5+5+5,
10+5+2+2+2+2+2, 5+5+5+2+2+2+2+2, 5+2+2+2+2+2+2+2+2+2+2