Задача B1. КАРТОНЧЕТА
Ваньо имал
няколко картончета, на които били написани естествени числа. Докато скучаел в
градския транспорт, той си играел с тях и забелязал, че като отдели едно или
няколко от тях, може да получи като сума всяко естествено число от 1 до сбора
на всичките и то по единствен начин (с точност до реда на
събираемите: 2+4 и 4+2 не са различни). “Ама разбира се!”, тупнал се по главата
Ваньо. “Числата ми са 1, 2, 4 и 8 – какво да се получи друго?! Двоична бройна
система!”
Да, но червеят
на любопитството го заглождил – ами ако не бяха първите последователни степени
на двойката? Дали 15 (каквато е сумата в сегашния му случай) има и друго такова
“разбиване по картончета” (бързо измислил и термин Ваньо): набор от естествени
числа със сума 15, така че всяко число от 1 до 15 да може да се представя по
единствен начин чрез едно или сума от няколко събираеми от набора? Ами ако не е
15, а някакво естествено N, колко такива набори има за него?
Ваньо много
бързо се отказал от привлекателната идея на картончетата да има непременно
различни числа, тъй като тогава: 1 трябва да го има, 2 – също, 3 не трябва, че
вече го има като 1+2, но четири – задължително... И така – стига се пак до
“тривиалното” решение – двоична бройна система (при това – има решение само за
N=2k-1). Той решил да допусне за всяко картонче най-много още едно
картонче със същото число, като, ако има повтарящи се – просто да не ги
различава при образуване на сумите. Така N=5, например, което в първата
формулировка няма решение, сега може да се представи като {a=1, b=2, c=2}, например.
Вярно, че 3=1+2 формално се представя по два начина (a+b и a+c), но то си е
все 1+2.
Ето примери, да
уточним идеите на Ваньо: {1, 2, 3} не е добър набор от картончета (за N=6),
защото 3 се представя от една страна със самото себе си, от друга – чрез
поднабора {1, 2} и се губи единствеността; {1, 1} е единствената възможност за
N=2; {1, 1, 1} не е добър набор за N=3 – има трето картонче с един и същи
надпис; {1, 2, 5} не е добър набор за N=8 (4 не може да се представи чрез
поднабор от тях), но {1, 1, 3, 3} е добър.
Помогнете на
Ваньо да намира броя на добрите “разбивания по картончета” за зададено N, като
напишете програма CART.EXE, която определя този брой.
ВХОД: От стандартния вход се
въвежда един ред с естественото число N, не по-голямо от 2000000000.
ИЗХОД: На стандартния изход се
извежда един ред с получения брой или числото 0, ако такова “разбиване” няма.
ПРИМЕР
Вход
15
Изход
1
ОБЯСНЕНИЕ: От
всичките осем разбивания, които удовлетворяват условието за единственост, само
в последното (“тривиалното”) е изпълнено и условието за не повече от две
срещания на всяко от събираемите (там просто няма повторения):
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1,
8}, {1, 1, 1, 4, 4, 4}, {1, 1, 1, 4, 8},
{1, 2, 2, 2, 2, 2, 2, 2}, {1, 2,
2, 2, 8}, {1, 2, 4, 4, 4}, {1, 2, 4, 8}
Задача B2. РАЗХОДКИ
Слончето Нели живее в обширното Равно поле, през което тече известната
Права река. Пак там се намира и не по-малко известното Кръгло езеро. Докато си
почиваше на сянка под една палма, слончето си мислеше само за едно: “Каквато е
жега, да взема да ида до реката... Или до езерото... Най-добре – и до двете!
Колко ли път трябва да измина най-малко за тази разходка? Всъщност – за всяка
от двете разходки: от тук до реката и после до езерото и от тук до езерото и
после до реката... Я да видим...“ И, като се замисли дълбоко, Нели заспа. Не,
не я будете, преди да сте написали програма WALK.EXE, която отговаря на нейните
въпроси.
ВХОД: От стандартния вход се въвеждат следните редове:
-
ред 1: три цели числа A, B
и C, разделени с интервал: коефициентите на правата p,
която описва Права река: p: Ax + By +
C = 0. A и B не са едновременно нули,
а абсолютната стойност на числата не надвишава 100. Широчината на Права река е
пренебрежимо малка;
-
ред 2: две цели числа (P
и Q) и едно естествено R, разделени с интервал:
съответно координатите на центъра и радиуса на окръжността, очертана от
Кръглото езеро. Абсолютната стойност на тези числа не надвишава 200;
-
ред 3: две цели числа X и
Y разделени с интервал – координатите на Нели. Абсолютната
стойност на тези числа не надвишава 500.
ИЗХОД:
Запишете на стандартния изход два реда с
по едно реално число, закръглено с точност до втория знак след десетичната
точка:
-
ред 1: дължината на най-краткия път,
който води от мястото на Нели до реката, а след това до езерото;
-
ред 2: дължината на най-краткия път,
който води от мястото на Нели до езерото и след това до реката.
УТОЧНЕНИЯ: Езерото няма общaточка с реката. Нито реката,
нито езерото са дълбоки и Нели може спокойно да ги “прецопва”. Не е проблем (направо
си е удоволствие!), ако на път за реката при първата разходка Нели поцопа из
езерото, но после пак трябва да се върне до него, както и ако на път за езерото
пресече реката (после пак трябва да стигне до нея). На картата са показани две
напълно допустими разходкиXAB и XCD.
ПРИМЕР
Вход
3 4 -12
5 4 2
1 5
Изход
5.10
4.78
Задача B3. ПЕЧАТНИ ПЛАТКИ
Изработването
на печатни платки в електрониката е високотехнологичен и скъпо струващ процес:
известен брой точки на специално изработена (евентуално многослойна) изолационна пластина (“платка”)
се свързват чрез непресичащи се тънки електропроводими покрития (“пътечки”). На
платките, с които разполагате, две мислени линии от точки A и B са съединени с
пътечки, като някои точки от A са свързани с някои точки от B. Това много Ви
устройва: електронната платка, която разработвате, трябва да има точно такава
конструкция. Само че, във Вашия случай, всяка точка от A трябва да е свързана
точно с две точки от B, а всяка точка от B – най-много с една точка от A. Дали
можете да пригодите наличните платки за нуждите си и да реализирате сериозни
икономии? Единственото оръжие, с което разполагате, е възможност да прекъснете
някои от дадените пътечки – които искате и колкото искате: това е много
по-евтино от създаването на нова платка. Напишете програмата PLATE.EXE,
която да определя има ли задачата решение и кои от пътечките трябва да се прекъснат.
ВХОД: От стандартния вход се
въвеждат:
-
ред 1: трите естествени числа M (брой
на точките на линия A), N (брой на точките на линия B) и K, разделени с
интервал. M и N не надвишават 100, а K не е повече от 5000;
-
на всеки от следващите K реда се описва
една от пътечките чрез две естествени числа, разделени с интервал. Първото е
номер на точка от линия A, а второто – от линия B.
ИЗХОД: Запишете на стандартния
изход:
-
един ред със съобщението NО, ако, уви,
платката не може да бъде пригодена за нуждите Ви;
иначе:
-
ред 1: едно цяло неотрицателно число S
– брой на пътечките, които ще бъдат прекъснати. Ако S е нула други редове няма;
-
на всеки от следващите S реда опишете
по една от пътечките, която ще бъде прекъсната в същия формат, в какъвто е
дадена при въвеждането.
ЗАБЕЛЕЖКА: На схемата по-горе
пътечките, свързващи точките, не се пресичат – те минават на различни слоеве.
ПРИМЕР
Вход Изход
3 6 10
4
1 1 1 4
1 3 1 5
1 4 2 5
1 5 3 1
2 2
2 4
2 5
3 1
3 5
3 6