Mince a polynomy
Zadání
- ☛ množina typů mincí T(dle hodnot např. { 1,2,5,10 })
- ☛ funkce cnt: T → N, která udává pro každý typ, kolik mincí tohoto typu máme k dispozici (např. cnt(5)=3 znamená, že máme 3x 5€)
- ☛ cílová částka S
Zjistěte, kolika způsoby je možné zaplatit S, při daném T a cnt.
Řešení pomocí polynomů
- 1. pro každý typ t ∈ T zkonstruujeme polynom:

- 2. vynásobením všech polynomů z předchozího kroku získáme polynom:

- 3. hledaný počet způsobů je koeficient v polynomu P u členu s exponentem rovným S
Násobení polynomů
Pro polynom jsme si vytvořili následující datovou strukturu založenou na spojovém seznamu:
type PClen = ^TClen;
TClen = record
koef: longint;
expo: longint;
next: PClen;
end;
Pro tuto strukturu jsme programovali funkci, která násobí dva polynomy:
function nasob(A,B: PClen): PClen;
Přitom je možné využít lehce upravené procedury pro práci se spojovým seznamem z minulého domácího ukolu.
Domácí úkol
V CodExu je zadána úloha Spojové seznamy - Dělení řidkých polynomů. Můžete předpokládat, že exponent prvního načteného polynomu je větší, než všechny exponenty druhého polynomu.