SlideShare a Scribd company logo
KOMBINATORIKA
Seminarski iz programiranja
Sadržaj
 Kombinatotika uvod
 Elementi kombinatorike
 Binomni koeficijent
 Permutacije,varijacije i kombinacije
 Paskalov trougao
 Katalanovi brojevi i
Pojam triangulacije poligona
 Ogrlice
 Fibonačijev niz
 Zadaci
 Literatura
Uvod
Kombinatorika je matematička disciplina koja se bavi problemima postojanja, prebrojavanja i
konstrukcije elemenata sa zadatim osobinama u konačnim skupovima.
Povezana je sa mnogim drugim granama matematike, poput algebre, teorije verovatnoće
i geometrije, kao i sa raznim oblastima u računarstvu i statističkoj fizici. Aspekti
kombinatorike uključuju prebrojavanje objekata koji zadovoljavaju određeni kriterijum,
određivanje da li neki kriterijum može biti ispunjen, konstruisanje i analiziranje objekata koji
ispunjavaju neki kriterijum, nalaženje najvećih, najmanjih ili optimalnih objekata, i
nalaženje algebarskih struktura u koje ovi objekti mogu spadati (algebarska kombinatorika).
Elementi kombinatorike
Prebrojavanje elemenata
Broj elemenata nekog skupa A naziva se KARDINALNOST skupa A i obeležava se sa:
| 𝐴| = 𝑐𝑎𝑟𝑑( 𝐴) = 𝐴̅
Svojstva
1. | 𝐴| = 𝑛 ⇒ | 𝑃(𝐴)| = 2 𝑛
gde P(A) predstavlja partitivni skup skupa A odnosno skup
koji se sastoji od svih razlicitih podskupova skupa A a njihov broj jednak je 2 𝑛
.
2. | 𝐴| = 𝑛 𝑖 | 𝐵| = 𝑚 ⇒ | 𝐴 × 𝐵| = 𝑛 ∙ 𝑚
3. | 𝐴 ∪ 𝐵| = | 𝐴| + | 𝐵| − | 𝐴 ∩ 𝐵|
4. | 𝐴 ∪ 𝐵 ∪ 𝐶| = | 𝐴| + | 𝐵| + | 𝐶| − | 𝐴 ∩ 𝐵| − | 𝐵 ∩ 𝐶| − | 𝐴 ∩ 𝐶| + | 𝐴 ∩ 𝐵 ∩ 𝐶|
← | 𝐴 ∪ 𝐵 ∪ 𝐶|
5. | 𝐴1| = 𝑚1,| 𝐴2| = 𝑚2 … | 𝐴 𝑘| = 𝑚 𝑘 ⇒ | 𝐴1 × 𝐴2 × … × 𝐴 𝑘| = 𝑚1 ∙ 𝑚2 ∙ … ∙ 𝑚2
6. | 𝐴| = 𝑛 | 𝐵| = 𝑚
Broj preslikavanja skupa A u skup B ima 𝑚 𝑛
𝑓 = (
𝑎1
𝑚
𝑎2
𝑚
…
𝑎 𝑛
𝑚
)
Primer:
𝐴 = {1,2} 𝐵 = {3,4,5}
𝑓: (
1
3
2
3
) 𝑓: (
1
3
2
4
) 𝑓: (
1
4
2
3
) 𝑓: (
1
4
2
4
) 𝑓: (
1
4
2
5
)
𝑓: (
1
5
2
4
) 𝑓: (
1
5
2
5
) 𝑓: (
1
3
2
5
) 𝑓: (
1
5
2
3
)
| 𝐴| = 2 | 𝐵| = 3 32
= 9
7. Binarnih relacija na skupu A od n elemenata ima 𝑛2
| 𝐴| = 𝑛
| 𝐴× 𝐴| = 𝑛2
| 𝑃(𝐴× 𝐴)| = 2 𝑛2
Osnovni kombinatorni principi na kojima se zasnivaju skoro sva prebrojavanja su:
- princip jednakosti: Za konačne skupove A i B i bijekciju f : A → B, važi |A| = |B|,
- princip zbira: za disjunktne i konačne skupove A i B važi |A ∪ B| = |A| + |B|.
- princip proizvoda: Za konačne skupove A i B važi |A ×B| = |A| · |B|.
Binomni koeficijent
Binomni koeficijent 𝐶 𝑛
𝑘
je broj razlicitih nacina da se nasumice izabere k od ukupno n
predmeta bez obzira na raspored predmeta po setovima odnosno njihovu nesredjenost.
U matematici, a posebno u kombinatorici, binomni koeficijent broja n i celog broja k
definisan je kao:
(
𝑛
𝑘
) =
𝑛!
𝑘! ( 𝑛 − 𝑘)!
= ∏
𝑛 + 1 − 𝑖
𝑖
, 𝑛 ≥ 𝑘 ≥ 0
𝑘
𝑖=1
𝑖 (
𝑛
𝑘
) = 0 𝑎𝑘𝑜 𝑗𝑒 𝑘 < 0 𝑖𝑙𝑖 𝑘 > 𝑛
Prema Nikolasu Higamu, notaciju ( 𝑛
𝑘
) je uveo u upotrebu Albert fon Etinghauzen 1826, iako
se za ove brojeve znalo vekovima pre toga (Paskalov trougao).
Binomni koeficijenti su koeficijenti u razvoju binoma (x + y)n (odatle i naziv):
(𝑎 + 𝑏) 𝑛
= ∑ (
𝑛
𝑘
) 𝑎 𝑘
𝑏 𝑛−𝑘
𝑛
𝑘=0
𝑜𝑑𝑛𝑜𝑠𝑛𝑜 (𝑎+ 𝑏) 𝑛
= 𝐶 𝑛
0
𝑎 𝑛
+𝐶 𝑛
1
𝑎 𝑛−1
𝑏 + 𝐶 𝑛
2
𝑎 𝑛−2
𝑏 + ⋯+ 𝐶 𝑛
𝑛
𝑏 𝑛
Ovo je generalizovano binomnom teoremom koja dozvoljava da n bude negativan ili realan
broj.
Permutacije
Permutacije mogu da budu bez ponavljanja i sa ponavljanjem. Bez ponavljanja znači da su
svi elementi u početnom skupu različiti, dok permutacija sa ponavljanjem znači da neki
elementi mogu da se javljaju više puta.
Broj permutacija računamo po formuli:
𝑃 = 𝑛!
gde je n broj elemenata skupa koji mogu biti izabrani.
Ako između n zadanih elemenata ima 𝑘1 jednakih jedne vrste, 𝑘2 jednakih druge vrste,
..., 𝑘 𝑟 jednakih r-te vrste, govorimo o permutacijama s ponavljanjem.
Broj permutacija s ponavljanjem od n elemenata jednak je:
𝑃𝑛
𝑘1,𝑘2,…,𝑘 𝑟
=
𝑛!
𝑘1!∙𝑘2!∙…∙𝑘 𝑟!
Procedura koja generiše permutacije sa ponavljanjem:
(izracunava broj permutacija sa ponavljanjem i stampa sve kombinacije
ukoliko je potrebno)
Varijacije
program permp (input,output);
type niz = array [1..20] of char;
var a, ta : niz;
p: array [1..20] of Boolean;
j,n,b: integer;
odg: Boolean;
odgt: char;
procedure stampa;
var i:integer;
begin
b:=b+1;
if odg then begin
for i:=1 to n do write(ta[i]);
writeln;
end;
end;
procedure perm(i,m: integer);
var j,k: integer;
begin
if i<=n then
begin
k:=1;
if i>1 then if a[i]=a[i-1] then k:=m;
for j:=k to n do begin
if p[j] then begin
ta[j]:=a[i];
p[j]:=false;
perm(i+1,j+1);
p[j]:=true;
end;
end; end
else
stampa;
end;
begin
write ('Koliko elemenata: ');
readln (n);
write ('Unesite elemente tako da oni');
writeln ('koji se ponavljaju budu sukcesivni');
b:=0;
for j:=1 to n do
begin
readln(a[j]);
p[j]:=true
end;
write ('Zelite li ispis? ');
readln (odgt);
odg:= not ((odgt='N') or (odgt='n'));
perm(1,1);
writeln ('Ukupno: ', b);
end.
Varijacije
Pretpostavimo da u jednom odeljenju od 25 učenika treba da izaberemo predsednika,
sekretara i blagajnika. Dakle, od 25 učenika treba da odaberemo 3 i pritom je važno ko je
predsednik, ko sekretar a ko blagajnik u odeljenju. Na koliko načina možemo napraviti ovaj
izbor.
Ovde su u pitanju varijacije. Od 25 učenika u odeljenju mi biramo samo 3, pa nisu svi učenici
izabrani. Takođe, važno je koga ćemo izabrati za predsednika, koga za sekretara a koga za
blagajnike, odnosno, bitan je poredak našeg izbora.
Varijacije takođe mogu da budu sa i bez ponavljanja. Ako od n početnih elemenata biramo
njih r, dobijamo varijacije od n elemenata r-te klase njihov broj označavamo kao 𝑉𝑛
𝑟
Broj varijacija računamo po formuli:
𝑉𝑛
𝑟
= 𝑛( 𝑛 − 1)( 𝑛 − 2)… ( 𝑛 − 𝑟 + 1) =
𝑛!
( 𝑛 − 𝑟)!
= 𝐶 𝑛
𝑟
𝑟!
U slučaju varijacija sa ponavljanjem imamo formulu:
𝑉𝑛
𝑟̅̅̅̅ = 𝑛 𝑟
gde je n broj elemenata skupa koji mogu biti izabrani, a r broj elemenata koji treba da
budu izabrani.
Primer : Katanac sa šifrom ima 4 koluta, a na svakom kolutu 10 slova abecede. Na koliko se
načina može izabrati šifra za katanac?
Traženi broj jednak je broju varijacija s ponavljanjem od
30 elemenata 4. reda:
𝑉30
4̅̅̅̅ = 304
= 810000
Šifra za katanac može se izabrati na 810000 načina.
Ili, prema principu uzastopnog prebrojavanja traženi broj možemo dobiti ovako:
prvo slovo možemo odabrati na 30 načina (bilo koje slovo naše abecede),
drugo slovo također na 30 načina (slova mogu biti i ista tj. mogu se ponavljati), treće na
30 načina i četvrto takođe na 30 načina.
Dakle, šifra za katanac može se izabrati na 30 ∙ 30 ∙ 30 ∙ 30 = 810000 načina.
Kombinacije
Primer:
Pretpostavimo sada da o jednom odeljenju od 25 učenika treba odabrati pet predstavnika za
Učenički parlament. U ovom slučaju ne mogu svi učenici da budu izabrani (jer od njih 25
biramo samo 5), a poredak nije bitan (jer oba člana parlamenta imaju jednake funkcije).
Kombinacije bez ponavljanja od n elemenata r -te klase obeležavamo sa 𝐶 𝑛
𝑟
i računamo po
formuli:
𝐶 𝑛
𝑟
=
𝑛!
𝑟! ( 𝑛 − 𝑟)!
= 𝐶 𝑛
𝑛−𝑟
Kombinacije sa ponavljanjem članova skupa:
𝐶 𝑛
𝑟̅̅̅ =
(𝑛 + 𝑟 − 1)!
𝑟! ( 𝑛 − 1)!
= 𝐶 𝑛+𝑟−1
𝑟
= 𝐶 𝑛+𝑟−1
𝑛−1
gde je n broj elemenata skupa koji mogu biti izabrani, a r broj elemenata koji treba da budu izabrani.
Primer : U prodavnici se mogu kupiti banane, jabuke i kruške. Na koliko načina možemo
kupiti 2 kg voća ako možemo kupiti po kilogram ponuđenog voća?
Možemo kupiti 2 kg voća (r=2). U ponudi su: banane, jabuke, kruške (n=3).
Poredak odabranog voća nije bitan, a možemo birati i samo jednu vrstu voća
(elementi se mogu ponavljati).
Traženi broj je broj kombinacija s ponavljanjem od 3 elementa 2. reda:
𝐾3
2̅̅̅̅ = (
3 + 2 − 1
2
) =
4!
2! ∙ 2!
= 6
Primer 2: U cvećari se prodaju mini ruže, bele rade i ljiljani. Na koliko načina je moguće
napraviti buket od 9 cvetova?
U ponudi su 3 vrste cveća (n=3), formiramo buket od 9 cvetova (r=9), možemo
birati ponovo istu vrstu cveća. Buket možemo napraviti na
𝐾3
9̅̅̅̅ = (
9 + 3 − 1
9
) =
11!
9! ∙ 2!
= 55
načina.
ZAKLJUČCI
Sve gore navedeno možemo smestitiu jednu tabelu:
Da li su izabrani svi
elementi početnog
skupa?
Da li je bitan poredak
među izabranim
elementima?
Formule za računanje
PERMUTACIJE
DA DA
Bez ponavljanja
𝑃 = 𝑛!
Sa ponavljanjem
𝑃𝑛
𝑘1,𝑘2,…,𝑘 𝑟
=
𝑛!
𝑘1!∙𝑘2!∙…∙𝑘 𝑟!
VARIJACIJE NE DA
Bez ponavljanja
𝑉𝑛
𝑟
=
𝑛!
( 𝑛 − 𝑟)!
Sa ponavljanjem
𝑉𝑛
𝑟̅̅̅̅ = 𝑛 𝑟
KOMBINACIJE
NE NE
Bez ponavljanja
𝐶 𝑛
𝑟
=
𝑛!
𝑟! ( 𝑛 − 𝑟)!
Sa ponavljanjem
𝐶 𝑛
𝑟̅̅̅ =
(𝑛 + 𝑟 − 1)!
𝑟! ( 𝑛 − 1)!
Paskalov trougao
Važna rekurzivna relacija
C(n,k)+C(n,k+1)=C(n+1,k+1)
sledi direktno iz definicije binomnog koeficijenta. Ovom relacijom, i matematičkom
indukcijom se može dokazati da je C(n,k) prirodni broj, za svako n i k (što nije najočiglednije
odmah iz definicije).
Na taj nacin se konstruise paskalov trougao:
red 1 1
red 2 1 1
red 3 1 2 1
red 4 1 3 3 1
red 5 1 4 6 4 1
red 6 1 5 10 10 5 1
red 7 1 6 15 20 15 6 1
red 8 1 7 21 35 35 21 7 1
red 9 1 8 28 56 70 56 28 8 1
Ponavljanje formula: (koja je povezana s Pascalovim trouglom):
𝐶 𝑛
𝑘
= 𝐶 𝑛−1
𝑘−1
+ 𝐶 𝑛−1
𝑘
Binomni koeficijenti su od velike važnosti u kombinatorici jer nude gotove formule za česte
probleme prebrojavanja:
 Svaki skup sa n poseduje tačno ( 𝑛
𝑘
) različitih podskupova koji imaju k elemenata
 Broj binarnih brojeva dužine n koje sadrže k jedinica i n − k nula je ( 𝑛
𝑘
).
 Broj binarnih brojeva koji sadrže k jedinica i n nula tako da nikoje dve nisu susedne
je ( 𝑛+1
𝑘
).
 Broj različitih sekvenci od n prirodnih brojeva čiji je ukupni zbir k je ( 𝑛+𝑘−1
𝑘
); ovo je
takođe broj različitih načina da se iz skupa sa n elemenata izabere k elemenata ukoliko je
dozvoljeno ponavljanje.
Formule sa binomnim koeficijentima
Neke od veoma korisnih formula:
 Pravilo simetrije:
𝐶 𝑛
𝑘
= 𝐶 𝑛
𝑛−𝑘
 Dodavanje-nametanje:
𝐶 𝑛
𝑘
=
𝑛
𝑘
𝐶 𝑛−1
𝑘−1
 Zbir nad k:
∑ 𝐶 𝑛
𝑘
= 2 𝑛
𝑛
𝑘=0
 Zbir nad n:
∑ 𝐶 𝑚
𝑘
= 𝐶 𝑛+1
𝑘+1
𝑛
𝑚=0
 Zbir preko n i k:
∑ 𝐶 𝑛+𝑘
𝑘
= 𝐶 𝑛+𝑚+1
𝑚
𝑚
𝑘=0
 Sumirajuci kvadrati:
(𝐶 𝑛
0
)2
+ (𝐶 𝑛
1
)2
+ ⋯ + ( 𝐶 𝑛
𝑛)2
= 𝐶2𝑛
𝑛
Dokaz:
∑ (
𝑛
𝑘
)
2
𝑛
𝑘=0
= (
2𝑛
𝑛
)
Logički dokaz:
(
𝑛
𝑘
)
2
= (
𝑛
𝑘
) (
𝑛
𝑛 − 𝑘
)
Ako bi sabrali sve, to bi izgledalo ovako:
(
𝑛
0
) (
𝑛
𝑛
) + (
𝑛
1
) (
𝑛
𝑛 − 1
) + ⋯ + (
𝑛
𝑛
) (
𝑛
0
)
Moze se zamisliti kao o izboru n ljudi iz grupe od 2n(Mozemo izabrati k ljudi iz jedne i n-k ljudi
iz 2. grupe. Ovo radimo za k=1,2,…n.)
 Pondirani zbir:
1𝐶 𝑛
1
+ 2𝐶 𝑛
2
+ ⋯+ 𝑛𝐶 𝑛
𝑛
= 𝑛2 𝑛−1
Dokaz:
Mozemo dokazati pomoću matematičke indukcije. Za n = 1, nije potrebno dokazivati jer je
onda n=k pa će leva strana svakako biti jednaka desnoj=1:
(2) indukcijska pretpostavka:
C(k, 1) + 2·C(k, 2) + 3·C(k, 3) + ... + k·C(k, k) = k2k-1.
Ako levu stranu ip.(2) označimo sa S(k), i iskoristimo adicionu formulu za k+1 dobijamo:
S(k+1) = C(k+1, 1) + 2·C(k+1, 2) + 3·C(k+1, 3) + ... + (k+1)·C(k+1, k+1)
= 1·(C(k, 0) + C(k, 1)) + 2·(C(k, 1) + C(k, 2)) + ... + k·(C(k, k-1) + C(k, k)) +
(k+1)C(k, k)
= 1·C(k, 0) + 3·C(k, 1) + 5·C(k, 2) + ... + (2k+1)C(k, k)
= (C(k, 0) + C(k, 1) + C(k, 2) + ... + C(k, k)) + 2·S(k)
= 2k + 2·k·2k-1
= (k + 1)·2k.
 Zbir sa Fibonacijevim brojevima:
𝐶 𝑛
0
+ 𝐶 𝑛−1
1
+ ⋯ + 𝐶 𝑛−𝑘
𝑘
+ ⋯+ 𝐶0
𝑛
= 𝐹𝑛 +1
Dokaz:
Dijagonalnim sabiranjem brojeva iz Paskalovog trougla dobijamo Fibonaccijev niz.
Katalanovi brojevi
Katalanovi brojevi (Cn) predstavljaju niz brojeva koji se prvenstveno koriste u geometriji, ali
se ovaj niz pojavljuje i kao rešenje velikog broja kombinatornih problema. Prvi put ih je
otkrio Leonard Ojler (Leonhard Euler, 1707-1783) tražeći opšte rešenje za broj različitih
načina na koji se jedan mnogougao može podeliti na trouglove. Pritom je trebalo voditi računa
da se ne koriste dijagonale mnogougla koje se međusobno seku.
Međutim, ovi brojevi su ipak dobili ime po belgijskom matematičaru Ežen Sarl Katalanu
(Eugene Charles Catalan, 1814–1894) koji je otkrio vezu između ovih brojeva i problema
korektnih nizova n parova zagrada.
Katalanovi brojevi se izraunavaju po sledećoj formuli [39]:
𝐶 𝑛 =
1
𝑛 + 1
𝐶2𝑛
𝑛
=
(2𝑛)!
( 𝑛 + 1)! 𝑛!
, 𝑧 𝑎 𝑛 ≥ 0
gde važi da je n broj trouglova na koje se može podeliti dati poligon. Cesto se koristi i sledeći
alternativni izraz za definiciju Katalanovih brojeva:
(
2𝑛
𝑛
) − (
2𝑛
𝑛 + 1
) =
(2𝑛)!
( 𝑛!)2
−
(2𝑛)!
( 𝑛 − 1)!( 𝑛 + 1)!
=
(2𝑛)!
𝑛! ( 𝑛 + 1)!
= 𝐶 𝑛
𝑜𝑑𝑛𝑜𝑠𝑛𝑜 𝐶 𝑛 = 𝐶2𝑛
𝑛
− 𝐶2𝑛
𝑛−1
, 𝑧𝑎 𝑛 ≥ 0
Rekurzivna formula
Katalonovi brojevi zadovoljavaju rekurziju:
𝐶0 = 1, 𝐶 𝑛+1 = ∑ 𝐶𝑖
𝑛
𝑖=0
𝐶 𝑛−𝑖 𝑧𝑎 𝑛 ≥ 0
𝑜𝑑𝑛𝑜𝑠𝑛𝑜 𝐶𝑛 = ∑ 𝐶𝑖
𝑛−1
𝑖=0
𝐶 𝑛−1−𝑖
𝑎 𝑝𝑜š𝑡𝑜 𝑗𝑒 𝐶2𝑛
𝑛
= ∑(𝐶 𝑛
𝑖
)2
𝑛
𝑖=0
, 𝑜𝑛𝑑𝑎 𝑗𝑒: 𝐶 𝑛 =
1
𝑛 + 1
∑(𝐶 𝑛
𝑖
)2
𝑛
𝑖=0
Katalonovi brojevi zadovoljavaju i sledeću rekurziju:
𝐶0 = 1, 𝐶 𝑛+1 =
2(2𝑛 + 1)
𝑛 + 2
𝐶 𝑛
Svojstva
Generirajuća funkcija Katalanovih brojeva je:
∑ 𝐶 𝑛
∞
𝑛=0
𝑧 𝑛
=
1 − √1 − 4𝑧
2𝑧
Asimptotska vrednost je:
𝐶 𝑛~
4 𝑛
𝑛3 2⁄
√ 𝜋
Katalanovi brojevi se još mogu izraziti i Segnerovom rekurzivnom formulom kao i
Bertrandovom ballot teoremom. Tabela sadrži Katalanove brojeve za vrednosti n ∈ {1, 2,
..., 30}, koji se izračunavaju po formuli.
Primena
Pojam triangulacije poligona
Triangulacija poligona je istorijski veoma star problem koji je doveo do otkrića Katalanovih
brojeva. Pri određivanju svih triangulacija poligona mora biti razmotren i oblik poligona. Ovo
čini problem izračunavanja veoma teškim. Problem može biti smanjen tako što se
ograničavamo na proračune vezane za konveksne poligone. Za konveksne poligone sve
dijagonale su uvek unutrašnje dijagonale. U ovom slučaju broj triangulacija konveksnog
poligona je nezavisan od oblika i može biti jedinstveno okarakterisan brojem temena n.
Pod triangulacijom konveksnog poligona podrazumevamo razlaganje unutrašnjosti poligona
na trouglove, međusobno nepresecajućim unutrašnjim dijagonalama. Kod ovog problema se
zapravo razmatra broj triangulacija, gde je moguća maksimalna podela konveksnog poligona
na n − 2 trougla. Na slici su predstavljeni neki načini rešavanja ovog problema.
Triangulacija poligona sa n temena zahteva podelu na trouglove sa n − 3 unutrašnjih
dijagonala koje se ne ukrštaju.
Primer 2
Potpuno binarno stablo, gde svaki otac ima najviše dva sina može da predstavlja primer za
Katalanove brojeve. Katalanov broj 𝐶 𝑛 je broj potpunih binarnih stabala sa n+1 listom.
Ogrlice
Problem "ogrlice" - jedan je od klasičnih problema u kombinatorici. Potrebno je izračunati
koliko postoji različitih ogrlica od n kuglica, od kojih svaka može biti jedne od k boja. Ogrlica
se moze rotirari (ciklicno pomerati) ali se ne sme menjati njihov redosled u ogrlici.
Rešenje
U ovom zadatku, odmah možemo naći neku grupu invarijantne permutacije. Očigledno je da
će se sastojati od n permutacija:
𝜋0 = 1 2 3 . . . 𝑛
𝜋1 = 2 3 . . . 𝑛 1
𝜋2 = 3 . . . 𝑛 1 2
. . .
𝜋 𝑛−1 = 𝑛 1 2 . . .(𝑛 − 1)
Hajde da nadjemo eksplicitnu formulu za izračunavanje 𝐶(𝜋𝑖). Možemo zaključiti da je i – ta
permutacija na j-tom mestu jednaka i+j (po modulu n ako je zbir veći od n) ali ako u obzir
uzmemo strukture i-tih permutacija, mozemo videti da se u njima pojavljuje jedinica 1+i koja
zatim prelazi u 1+2i, pa 1+3i i tako dalje sve do 1+kn. Odatle mozemo zakljuciti da svi ciklusi
imaju iste dužine koje su jednake nzd(i,n)/i, odnosno n/nzs(i,n). Tada će broj ciklusa do i-te
permutacije biti nzs(i,n)
Zamenom ovih vrednosti u Polyevoj teoremi dobijamo:
𝐴𝑛𝑠 =
1
𝑛
∑ 𝑘 𝑛𝑧𝑠(𝑖,𝑛)
𝑛
𝑖=1
Fibonačijev niz
Fibonačijev niz je matematički niz primećen u mnogim fizičkim, hemijskim i biološkim
pojavama. Početkom XIII veka Leonardo Fibonacci (1180-1240) je upoznao Evropu sa
radovima indijsko-arapskih matematičara, a time neposredno i kineskih. On je u svojoj
raspravi Liber abaci 1202. godine izložio praktičan aritmetički problem:
˝Koliko pari zečeva će reprodukovati jedan par za godinu dana ako se pretpostavi da svakog
meseca jedan par rodi novi par koji za dva meseca postane reproduktivan?˝
Zanimljiv je redosled brojeva do kojeg je došao proučavajući razmnožavanje zečeva.
Rešavanjem ovog zadatka dobio je niz brojeva na sledeći način: prvog meseca eksperiment
počinje jednim parom zečeva, u drugom mesecu će postojati samo taj jedan par, u trećem
mesecu će ih biti 2, u četvrtom 3, u petom 5, u šestom 8 itd.
Ovom nizu brojeva je francuski matematičar Edvard Lucas (1842-1891) dao ime
Fifonaccijevi brojevi i otkrio njihove važne primene.
Fibonaccijevi brojevi ili, kako ih često nazivamo, Fibonaccijev niz je vrsta rekurzivnog niza u
kojem zbir dva prethodna člana daje sledeći broj.
Oznaka člana u nizu F1 F2 F3 F4 F5 F6 F7
Fibonaccijev niz 1 1 2 3 5 8 13
Fibonaccijevi brojevi su najjednostavnija vrsta rekurzivnog niza. U ovom rekurzivnom nizu
za formiranje n-tog člana reda moramo znati dva člana koji mu prethode. Dakle, za
poznavanje ovog niza su najvažnija prva dva člana F1 i F2, jer se ostali članovi mogu dobiti iz
relecije:
𝑓1 = 1 𝑓2 = 1
𝑓𝑛 = 𝑓𝑛−1+𝑓𝑛−2, 𝑛 ≥ 2
Što se tiče rekurzivne funkcije za odredjivanje n-tog člana ovog niza, ona bi glasila ovako:
function fib(n:longint):longint;
begin
if n=0 then fib:=0;
if n<=2 then fib:=1
else fib:=fib(n-1)+fib(n-2);
end;
Zadaci
Igra sa brojevima (www.spoj.com/problems)
Mali Ciko voli da igra sledeću igru sa brojevima:
1. On izabere broj N i skup od K prirodnih brojeva
2. Zatim ispiše sve brojeve od 1 do N
3. Izabere prvi od K brojeva iz skupa i poništava sve brojeve od 1 do N koji su njime
deljivi ukljucujuci i sam broj
4. Ponavlja korak 3 za sve brojeve iz skupa
Jednog dana mali Ciko je bio raspoložen igra ovu igru sa svojim bratom. Medjum njegov brat
je zakomplikovao igru tako što je uveo jos jedan korak i zamolio ga da sazna broj celih
brojeva koji nisu poništeni na kraju igre a on sada traži vašu pomoć..
Unos: 10, 3
2, 4, 5
Ispis: 4
( brojevi 1, 3, 7, 9 nisu izbrisani)
program p1;
var a,b:array[1..100] of longint;
n,k,i,j,s:longint;
begin
read(n,k);
for i:=1 to k do
read(a[i]);
for j:=1 to n do begin
b[j]:=j;
for i:=1 to k do
if (b[j]>0) and (b[j] mod a[i]=0) then
b[j]:=0;
end;
for i:= 1 to n do
if b[i]>0 then s:=s+1;
write(s);
end.
Timovi (codeforces #478b)
n učesnika takmičenja podeljeno je u m timova na neki način tako da svaka
ekipa ima najmanje jednog takmičara. Nakon takmičenja, svaki par učesnika
iz iste ekipe se sprijateljio.
Potrebno je pronaći minimalan i maksimalan broj parova prijatelja koji može biti formiran do
kraja takmičenja.
Program p1;
var m,n,a,b,min,max:int64;
begin
read(n,m);
a:=n div m;
b:=n mod m;
min:= (a-1)*a div 2*(m-b)+a*(a+1) div 2*b;
max:= ((n-m+1)*(n-m)) div 2
write(min,' ',max);
end.
Sofi i cveće (codeforces #322b)
Sofi ima cveće: p crvenih, q zelenih i r plavih cvetova. Ona treba da napravi bukete od ovog
cveća i to na 4 načina:
Crveni buket sastoji se od 3 crvena, plavi od 3 plava, zeleni od 3 zelena a mešani buket od
po 1 crvenog, plavog i zelenog cveta. Potrebno je odrediti maksimalan broj buketa koje Sofi
može da napravi.
Unos: 4, 4, 4
Ispis: 4
Unos: 2: 3, 6, 9
Ispis:6
Program p;
var s,i,max,ans,x,y,z,l,k,m,n:longint;
begin
read(x,y,z);
for s:=3 downto 0 do
if (x-s>=0) and (y-s>=0) and (z-s>=0) then
begin
ans:=s+(x-s) div 3+(y-s) div 3+(z-s) div 3;
if (ans>max) then max:=ans;
end;
writeln(max);
end.
Svemirski kod(www.spoj.com/problems)
Stanko voli svemirska putovanja, ali on je siromasan programer i nikada neće moći da kupi
svoju svemirsku letelicu. Zato je odlučio da je ukrade od Petra. Medjutim, postoji jedan
problem-Petru je letelica zaključana šifrom na osnovu broja zvezda iz galaksije Mlečnog puta.
Za razbijanje ovog sistema Stanko mora da proveri svaki podskup od četri zvezde čiji je
zajednički delilac 1..
Srećom, on je uspeo da ograniči broj zvezda na n. Pomozite mu da pronadje koliko postoji
ovakvih sistema?
Ulaz
U prvoj liniji ulaza tat je broj n<10000 dok se druga linija sastoji od maticnih brojeva svake
od n zvezda..
Unos Izlaz
4
2 3 4 5 1
4
2 4 6 8 0
7
2 3 4 5 6 7 8 34
Program p1;
var n,i,j,k,l,p,s:longint;
a:array[1..1000] of longint;
begin
read(n);
for i:=1 to n do read(a[i]);
for i:=1 to n-3 do
for j:=i+1 to n-2 do
for k:=j+1 to n-1 do
for l:=k+1 to n do
for p:=2 to a[i] do begin
if (a[i] mod p=0) and (a[j] mod p=0) and
(a[k] mod p=0) and (a[l] mod p=0) then
break
else if p=a[i] then s:=s+1;
end;
write(s, ' ');
end.
ZADATAK: Naš mali Draganče se našao u nevolji. Pre par nedelja se dogovorio sa
drugarima da na leto ide na more u Abenishbe, ali je ubrzo shvatio da nema dovoljno para. Pa
je odlučio da se zaposli i da zaradi te pare. Pošto ga niko nije shvatio ozbiljno da sa 10 godina
ume da programira, morao je da se zaposli na nekom mnogo manje zanimljivom mestu - u
prodavnici nakita. U toj prodavnici imaju jako veliki izbor - ogrlice, minđušhe, narukvice,
prstenje... Našem malom Dragančetu za oko su posebno zapale ogrlice od perli. Perle su
poređane u krug, i sa nekih perli iz kruga visi još po jedna niska perli. Svake dve susedne
perle su povezane malim konchićem (i sa kruga i sa niski). Draganče je primetio da je ogrlica
jako uska, tako da retko koja mušterija može da je stavi oko vrata, tako da i oni kojima se
svidi, odustanu posle probavanja. Draganče je smislio kako da reši problem! Makazama će
preseći jedan končić (koji spaja dve perle sa kruga), i neke dve perle će da spoji končićem.
Tako će da dobije ogrlicu istog tipa - krug sa visećim niskama perli. Poshto već par nedelja
nije ništa programirao, jer svaki dan sedi u prodavnici, zamolio vas je da mu pomognete, i
izračunate koliki najveći krug na ogrlici može da dobije, sa jednim sečenjem i jednim
spajanjem. Naravno, kada bi znao najveći krug, mogao bi svakoj ogrlici da poveća krug, i
samim tim poveća broj mušterija.
Ulaz:
(Ulazni podaci se nalaze u datoteci ogrlica.in) U prvom redu ulazne datoteke se nalazi
broj n (n≤ 500000) koji predstavlja broj perli na krugu. U sledećem redu su dva
broja, k i m (k≤ 10000, m≤ 10000000). U sledećih k redova se nalazi po jedan ceo broj
niza xi (xi≤ 2*m). Niz ai izračunajte koristeći doele navedeni segment programa
(niz xi ima k elemenata i njhovi indeksi su od 0 do k-1, a ai ima n elemenata i njihovi indeksi
su od 0 do n-1):
Za Pascal programere bi segment imao sledeći izgled:
j := 0;
for i := 0 to n-1 do begin
a[i] := x[j];
s := (j+1) mod k;
x[j] := ((x[j] xor x[s]) + 13) mod m;
j := s;
end;
U ovom kodu je xor oznaka za bitovnu eksluzivnu disjunkciju koja postoji kao operacija u
Rascal-u. Broj ai predstavlja broj perli u niski ispod i-te perle na krugu. Rešenje ne zavisi od
gornje formule, u njoj ne postoje zavisnosti koje bi vam pomogle u rešavanju. Ona služi da
ulazna datoteka ne bude prevelika, da bi mogla da se učita u vremenskom ograničenju.
Izlaz:
(Izlazne podatke upisati u datoteku ogrlica.out) U prvi red izlazne datoteke ispisati jedan ceo
broj - broj perli u najvećem krugu koji se može dobiti jednim sečenjem i jednim spajanjem
dve perle date ogrlice.
Primer 1:
ogrlica.in ogrlica.out
12
12 5
3,0,3,2,2,0,2,0,1,0,1
17
,0
Objašnjenje:
Ogrlica je prikazana na slici ispod odgovora. Nizovi x i a su identični. Ako presečemo između
2. i 3. perle sa kruga, i spojimo poslednje perle iz niski ispod 2. i 3. perle, dobijamo dužinu 12
+ 3 + 2 = 17
#include <stdio.h>
const int maxn = 1000000;
int x[200];
int a[maxn];
int best[2*maxn];
int koji[2*maxn];
void gen(int* x, int k, int* p, int n, int m) {
int i,j = 0;
for (i = 0; i < n; i++) {
a[i] = x[j];
printf("niz %dn", a[i]);
int s = (j+1) % k;
x[j] = ((x[j] ^ x[s]) + 13) % m;
j = s;
}
}
int main() {
int i,j,k,n,m,poc,kraj,res;
freopen("ogrlica.in","r",stdin);
freopen("ogrlica.out","w",stdout);
scanf("%d", &n);
scanf("%d %d", &k, &m);
for (i=0;i<k;i++)
scanf("%d", &(x[i]));
gen(x,k,a,n,m);
best[0] = n + a[0];
koji[0] = 0;
poc = 0;
kraj = 0;
for (i=1;i<n;i++)
{
while (kraj >=poc && best[kraj]<n-i+a[i])
kraj--;
kraj++;
best[kraj] = n-i+a[i];
koji[kraj] = i;
}
res = a[n-1] + best[poc];
for (i = 0;i<n;i++)
{
if (koji[poc]==i)
poc++;
while (kraj >=poc && best[kraj]<-i+a[i])
kraj--;
kraj++;
best[kraj] = -i+a[i];
koji[kraj] = i;
int tr = a[i] + i + 1 + best[poc];
res = res>tr?res:tr;
}
printf("%dn", res);
return 0;
}
Pečat
Data je matrica n*m koja je popunjena crnim i belim poljima. Odrediti koliko ce biti crnih
polja nakon sto se pecat redom udari k puta po glavnoj dijagonali.
Odrediti n-ti clan fibonacijevog niza:
Odrediti n-ti katalanovbroj: (𝐶 𝑛 = 𝐶2𝑛
𝑛
− 𝐶2𝑛
𝑛−1
)
:
program p1;
type niz=array[1..100,1..100] of integer;
var a:niz; p,k,m,n,i,j,o,q:integer;
begin
read(n,m,k);
for i:=1 to n do
for j:=1 to m do
read(a[i,j]);
p:=0;
for i:=1 to n do
for j:=1 to m do
if (a[i,j]=1) and ((i=1) or (j=1)) then
p:=p+k
else if (a[i,j]=1) then begin
q:=0;
o:=0;
repeat
q:=q+1;
if (a[i,j]=a[i-q,j-q]) then o:=o+1;
until (i-q=0) or (j-q=0) or (a[i,j]=a[i-q,j-q]);
if (o=0)
then p:=p+k
else if (o=1) and (q=1) then p:=p+1
else if (q>k) then p:=p+k
else if (q>1) then p:=p+q;
end;
writeln(p);
end.
program p1;
var n:integer;
function fib(n:integer):integer;
begin
if n<=2 then fib:=1
else fib:=fib(n-1)+fib(n-2);
end;
begin
read(n);
write (fib(n));
end.
function aa(n:longint):int64;
begin
if n<0 then begin
writeln(’ne postoji’);
halt;
end;
if n<=1 then aa:=1
else aa:= ( (2*n)! div (n!*n!) ) – ( (2*n)! div (n+1)!(n-1)! );
end;
ZADATAK: Rade zeli da proba da svira klavir. Nakon sto je odabrao n crnih i k belih dirki,
on zeli da odsvira sve melodije od m tonova koje se mogu proizvesti uz pomoc ovih n+k dirki
pri cemu on zeli da crne i bele dirke koristi naizmenicno. Koliko je ovakvih kombinacija?
1. Ako tonovi ne mogu da se ponavljaju
2. Ako tonovi mogu da se ponavljaju
Dreamooni wi-fi (codeforces #476b)
Dreamoon stoji na 0 poziciji brojevne prave. Drazil šalje listu komandi na njegov smartphone
preko wi-fi-a i Dreamoon ih prati.
Ima dve vrste naredbi:
1. + znači da krene 1 korak u pozitivnom smeru
2. - znači da krene 1 korak u negativnom smeru
Ali Wi-Fi signal je veoma slab pa Dreamoon-ov telefon izbacuje neke greške ili ne može da
ucita neku komandu. Zato Dreamoon odlučuje da prati komande koje njegov telefon učita a
da za ostale baca novčic i ide nasumično.
Vama su date: Originalna lista koju je Drazil poslao Dreamoonu i Lista koj mu je stigla. Koja
je verovatnoća da ce Dreamoon stići na poziciju koju mu je Drazil poslao?
Primer:
unos
++-+-
+-+-+
Program p1;
var n,k,l,m:longint;
function fakt(a,l:longint):longint;
begin
if l=0 then fakt:=1
else fakt:=a*fakt(a-1,l-1);
end;
function st(a,l:longint):longint;
begin
if l=0 then st:=1
else st:=a*st(a,l-1);
end;
begin
read(n,k,m);
l:=m div 2;
if m mod 2=0 then writeln(fakt(n,l)*fakt(k,l)*2)
else writeln(fakt(n,l)*fakt(k,l+1)+fakt(k,l)*fakt(n,l+1));
if m mod 2=0 then writeln(st(n,l)*st(k,l)*2)
else writeln(st(n,l)*st(k,l+1)+st(n,l+1)*st(k,l));
end.
ispis
1.000000000000
unos
+-+-
+-??
ispis
0.500000000000
unos
+++
??-
ispis
0.000000000000
Program p1;
var s1,s2:string;
ans,kol,f:int64;
i,n:longint;
procedure tt(i,sum:longint);
begin
if i=n+1 then begin
inc(kol);
if sum=f then inc(ans);
exit;
end;
if s2[i]='+' then tt(i+1,sum+1) else
if s2[i]='-' then tt(i+1,sum-1) else begin
tt(i+1,sum+1);
tt(i+1,sum-1);
end;
end;
begin
readln(s1);
readln(s2);
n:=length(s1);
for i:=1 to n do
if s1[i]='+' then inc(f) else dec(f);
tt(1,0);
writeln(ans/kol:0:9);
end.
Svet je pozorište (codeforces #131c)
Postoji n dečaka i m devojaka koji bi dolazili u pozorišni klub. Da bi osmislili predstavu oni
treba da odaberu grupu koja sadrži tačno m glumaca koji sadrže ne manje od 4 dečaka i ne
manje od jedne devojke. Na koliko načina mogu da odaberu grupu? Naravno varijante koje se
razlikuju u sastavu grupe smatraju se drugačije. Pronaći broj načina.
Улазни
Linija ulaznih podataka sadrži tri cela broja n, m, t ( 4 ≤  n  ≤ 30, 1 ≤  m  ≤ 30, 5
≤  т  ≤  n  +  t ).
Primer
улазни
5 2 5
излаз
10
улазни
4 3 5
излаз
3
Program p1;
var a:array[0..100,0..100] of int64;
n,m,i,j,t:longint;
ans:int64;
begin
readln(n,m,t);
for i:=0 to 60 do
begin
a[i,0]:=1;
for j:=1 to i do a[i,j]:=a[i-1,j]+a[i-1,j-1];
end;
for i:=4 to t-1 do ans:=ans+(a[n,i]*a[m,t-i]);
writeln(ans);
end.
Poenina liniji (codeforces #251a)
Mali Peja mnogo voli da skuplja poene. Nedavno mu je majka dala n tačaka na liniji OX .
Sada Peja treba da odredi koliko postoji načina da se odaberu tri tačke tako da razdaljina
izmedju dve najduže ne prelazi d.
Ulaz
Prva linija sadrži dva inegera: n i d (1 ≤ n ≤ 105; 1 ≤ d ≤ 109). Druga linija
sadrži n integera x1, x2, ..., xn, koji ne smeju da prelaze 109 — na x kordinantnoj osi.
Primer:
unos
4 3
1 2 3 4
ispis
4
unos
4 2
-3 -2 -1 0
ispis
2
unos
5 19
1 10 20 30 50
ispis
1
Program p1;
var a,b:array[1..100000] of longint;
n,i,d,l:longint;
p,s:int64;
begin
read(n,d);
for i:=1to n do
read(a[i]);
l:=1;
for i:=1to n do
begin
while((l<=n)and(a[l]-a[i]<=d))do
inc(l);
p:=l-i-1;
s:=s+((p*(p-1)) div 2)
end;
write(s)
end.
Literatura:
1. http://e-maxx.ru/algo/
2. http://www.wikipedia.org/
3. http://codeforces.com/problemset
4. http://free-zg.t-com.hr/Vesna_Erceg/Kombinatorika/KOMB_kombinacije2.htm
5. http://www.cut-the-
knot.org/arithmetic/combinatorics/ProofsForBinomialIdentity.shtml
6. http://math.stackexchange.com/questions/148583/combinatorial-proof-of-
summation-of-sum-k-0n-n-choose-k2-2n-choose
7. http://milan.milanovic.org/math/srpski/andrej/Phi.pdf
8. Analiza sa algebrom 1
9. http://www.dejanristanovic.com/refer/kombin.htm
10. http://www.spoj.com/problems/classical/
11. https://matematikon.wordpress.com/2012/02/18/kombinatorika-na-laksi-nacin/
12. http://www.pmf.ni.ac.rs/pmf/doktorati/doc/2013-12-10-sm.pdf
13. http://www.seminarski-diplomski.co.rs/MATEMATIKA/Broj-Phi-i-Fibonacijev-
niz.html

More Related Content

What's hot

7 kolicina toplote i unutrasnja energija
7 kolicina toplote i unutrasnja energija7 kolicina toplote i unutrasnja energija
7 kolicina toplote i unutrasnja energija
FiziKalac
 
Zagađivanje i zaštita životne sredine
Zagađivanje i zaštita životne sredineZagađivanje i zaštita životne sredine
Zagađivanje i zaštita životne sredine
Вероника Тривунић
 
Kombinatorika i primjene u zivotu lea slezinger i1
Kombinatorika i primjene u zivotu  lea slezinger i1Kombinatorika i primjene u zivotu  lea slezinger i1
Kombinatorika i primjene u zivotu lea slezinger i1
SANJASTUPAR2
 
Stepenovanje , korenovanje i kompleksni brojevi formulice(1)
Stepenovanje , korenovanje i kompleksni brojevi formulice(1)Stepenovanje , korenovanje i kompleksni brojevi formulice(1)
Stepenovanje , korenovanje i kompleksni brojevi formulice(1)
Jasmina Profil
 
Paralelogram
ParalelogramParalelogram
Paralelogram
NevenaLjujic
 
Sabiranje i oduzimanje algebarskih razlomaka
Sabiranje i oduzimanje algebarskih razlomakaSabiranje i oduzimanje algebarskih razlomaka
Sabiranje i oduzimanje algebarskih razlomakaprofmarina
 
Pravougli trougao sa uglom od 45.
Pravougli trougao sa uglom od 45.Pravougli trougao sa uglom od 45.
Pravougli trougao sa uglom od 45.
Jadranka Mihajlovic
 
цинк (Zn)
цинк (Zn)цинк (Zn)
цинк (Zn)
miluskaprsic
 
Osmitackapravaravan2018
Osmitackapravaravan2018Osmitackapravaravan2018
Osmitackapravaravan2018
Zorana Raičević
 
VIII razred - Sistemi linearnih jednacina sa dve nepoznate
VIII razred - Sistemi linearnih jednacina sa dve nepoznateVIII razred - Sistemi linearnih jednacina sa dve nepoznate
VIII razred - Sistemi linearnih jednacina sa dve nepoznate
mirjanamitic18
 
O OKSIDIMA
O OKSIDIMAO OKSIDIMA
O OKSIDIMAvvlivvli
 
Električno polje
Električno poljeElektrično polje
Električno polje
Goran Ignjatovic
 
VI разред
VI разредVI разред
VI разред
mirjanamitic
 
Razdvajanje sastojaka smeše - Mirjana Mirosavljević
Razdvajanje sastojaka smeše - Mirjana MirosavljevićRazdvajanje sastojaka smeše - Mirjana Mirosavljević
Razdvajanje sastojaka smeše - Mirjana Mirosavljević
Edukacija Obrazovni portal
 
Pitagorina teorema primjena na jednakostranicni trougao
Pitagorina teorema  primjena na jednakostranicni trougaoPitagorina teorema  primjena na jednakostranicni trougao
Pitagorina teorema primjena na jednakostranicni trougao
NevenaLjujic
 
godisnji test 6. razred matematika
godisnji test 6. razred matematikagodisnji test 6. razred matematika
godisnji test 6. razred matematika
Dragana Stamenkovic
 
5. Fotosinteza
5. Fotosinteza5. Fotosinteza
5. Fotosinteza
ltixomir
 

What's hot (20)

7 kolicina toplote i unutrasnja energija
7 kolicina toplote i unutrasnja energija7 kolicina toplote i unutrasnja energija
7 kolicina toplote i unutrasnja energija
 
Zagađivanje i zaštita životne sredine
Zagađivanje i zaštita životne sredineZagađivanje i zaštita životne sredine
Zagađivanje i zaštita životne sredine
 
Kombinatorika i primjene u zivotu lea slezinger i1
Kombinatorika i primjene u zivotu  lea slezinger i1Kombinatorika i primjene u zivotu  lea slezinger i1
Kombinatorika i primjene u zivotu lea slezinger i1
 
Углови на трансверзали
Углови на трансверзалиУглови на трансверзали
Углови на трансверзали
 
Stepenovanje , korenovanje i kompleksni brojevi formulice(1)
Stepenovanje , korenovanje i kompleksni brojevi formulice(1)Stepenovanje , korenovanje i kompleksni brojevi formulice(1)
Stepenovanje , korenovanje i kompleksni brojevi formulice(1)
 
Paralelogram
ParalelogramParalelogram
Paralelogram
 
Sabiranje i oduzimanje algebarskih razlomaka
Sabiranje i oduzimanje algebarskih razlomakaSabiranje i oduzimanje algebarskih razlomaka
Sabiranje i oduzimanje algebarskih razlomaka
 
Linearne jednacine
Linearne jednacineLinearne jednacine
Linearne jednacine
 
Pravougli trougao sa uglom od 45.
Pravougli trougao sa uglom od 45.Pravougli trougao sa uglom od 45.
Pravougli trougao sa uglom od 45.
 
цинк (Zn)
цинк (Zn)цинк (Zn)
цинк (Zn)
 
Osmitackapravaravan2018
Osmitackapravaravan2018Osmitackapravaravan2018
Osmitackapravaravan2018
 
VIII razred - Sistemi linearnih jednacina sa dve nepoznate
VIII razred - Sistemi linearnih jednacina sa dve nepoznateVIII razred - Sistemi linearnih jednacina sa dve nepoznate
VIII razred - Sistemi linearnih jednacina sa dve nepoznate
 
Konstruktovni zadaci(trougao)
Konstruktovni zadaci(trougao)Konstruktovni zadaci(trougao)
Konstruktovni zadaci(trougao)
 
O OKSIDIMA
O OKSIDIMAO OKSIDIMA
O OKSIDIMA
 
Električno polje
Električno poljeElektrično polje
Električno polje
 
VI разред
VI разредVI разред
VI разред
 
Razdvajanje sastojaka smeše - Mirjana Mirosavljević
Razdvajanje sastojaka smeše - Mirjana MirosavljevićRazdvajanje sastojaka smeše - Mirjana Mirosavljević
Razdvajanje sastojaka smeše - Mirjana Mirosavljević
 
Pitagorina teorema primjena na jednakostranicni trougao
Pitagorina teorema  primjena na jednakostranicni trougaoPitagorina teorema  primjena na jednakostranicni trougao
Pitagorina teorema primjena na jednakostranicni trougao
 
godisnji test 6. razred matematika
godisnji test 6. razred matematikagodisnji test 6. razred matematika
godisnji test 6. razred matematika
 
5. Fotosinteza
5. Fotosinteza5. Fotosinteza
5. Fotosinteza
 

Similar to Kombinatorika sa zadacima iz Programiranja

Us matematika
Us   matematikaUs   matematika
Us matematika
Marija Starcevic
 
Skupovi. Skupovi brojeva
Skupovi. Skupovi brojevaSkupovi. Skupovi brojeva
Skupovi. Skupovi brojeva
VečitiStudent
 
Matrice i determinante
Matrice i determinanteMatrice i determinante
Matrice i determinante
Dragan Djordjevic
 
Sistemi linearnih jednacina
Sistemi linearnih jednacinaSistemi linearnih jednacina
Sistemi linearnih jednacina
saculatac
 
Izracunavamo nepoznati deljenik
Izracunavamo nepoznati deljenik Izracunavamo nepoznati deljenik
Izracunavamo nepoznati deljenik
saculatac
 
задаци и решења са окружног такмичења из математике 2018.
задаци и решења са окружног такмичења из математике 2018.задаци и решења са окружног такмичења из математике 2018.
задаци и решења са окружног такмичења из математике 2018.
Jelena Volarov
 
Sanela Martinović deljenje sa 3 -
Sanela Martinović     deljenje sa 3 -Sanela Martinović     deljenje sa 3 -
Sanela Martinović deljenje sa 3 -Sanela Martinovic
 
Sanela martinović deljenje sa 3 -
Sanela martinović     deljenje sa 3 -Sanela martinović     deljenje sa 3 -
Sanela martinović deljenje sa 3 -Sanela Martinovic
 
L209 - Matematika - Matematička indukcija – Aleksandar Rajić - Živica Zeković
L209 - Matematika - Matematička indukcija – Aleksandar Rajić - Živica ZekovićL209 - Matematika - Matematička indukcija – Aleksandar Rajić - Živica Zeković
L209 - Matematika - Matematička indukcija – Aleksandar Rajić - Živica Zeković
NašaŠkola.Net
 
Zadaci 1 Mat. Inf. - selekcija.pdf
Zadaci 1 Mat. Inf. - selekcija.pdfZadaci 1 Mat. Inf. - selekcija.pdf
Zadaci 1 Mat. Inf. - selekcija.pdf
AleksandraIvanov4
 
MISS Ponavljanje B 2022.pdf
MISS Ponavljanje B 2022.pdfMISS Ponavljanje B 2022.pdf
MISS Ponavljanje B 2022.pdf
Sanja409412
 
Sanela Martinović deljenje sa 3 -
Sanela Martinović     deljenje sa 3 -Sanela Martinović     deljenje sa 3 -
Sanela Martinović deljenje sa 3 -Sanela Martinovic
 
Lidija stefanovic matematika iii
Lidija stefanovic matematika iiiLidija stefanovic matematika iii
Lidija stefanovic matematika iii
Небојша Митровић
 
Podsetnik-Skupovi N i No
Podsetnik-Skupovi N i NoPodsetnik-Skupovi N i No
Podsetnik-Skupovi N i No
Radovan Kozomara
 
05-zabavna-matematika-za-i-razred-kreativni-centar.pdf
05-zabavna-matematika-za-i-razred-kreativni-centar.pdf05-zabavna-matematika-za-i-razred-kreativni-centar.pdf
05-zabavna-matematika-za-i-razred-kreativni-centar.pdf
ssuser8e13291
 

Similar to Kombinatorika sa zadacima iz Programiranja (19)

Us matematika
Us   matematikaUs   matematika
Us matematika
 
O skupovim
O skupovimO skupovim
O skupovim
 
Skupovi. Skupovi brojeva
Skupovi. Skupovi brojevaSkupovi. Skupovi brojeva
Skupovi. Skupovi brojeva
 
Maturski ispit iz mat
Maturski ispit iz matMaturski ispit iz mat
Maturski ispit iz mat
 
Matrice i determinante
Matrice i determinanteMatrice i determinante
Matrice i determinante
 
Sistemi linearnih jednacina
Sistemi linearnih jednacinaSistemi linearnih jednacina
Sistemi linearnih jednacina
 
Izracunavamo nepoznati deljenik
Izracunavamo nepoznati deljenik Izracunavamo nepoznati deljenik
Izracunavamo nepoznati deljenik
 
задаци и решења са окружног такмичења из математике 2018.
задаци и решења са окружног такмичења из математике 2018.задаци и решења са окружног такмичења из математике 2018.
задаци и решења са окружног такмичења из математике 2018.
 
Sanela Martinović deljenje sa 3 -
Sanela Martinović     deljenje sa 3 -Sanela Martinović     deljenje sa 3 -
Sanela Martinović deljenje sa 3 -
 
Sanela martinović deljenje sa 3 -
Sanela martinović     deljenje sa 3 -Sanela martinović     deljenje sa 3 -
Sanela martinović deljenje sa 3 -
 
L209 - Matematika - Matematička indukcija – Aleksandar Rajić - Živica Zeković
L209 - Matematika - Matematička indukcija – Aleksandar Rajić - Živica ZekovićL209 - Matematika - Matematička indukcija – Aleksandar Rajić - Živica Zeković
L209 - Matematika - Matematička indukcija – Aleksandar Rajić - Živica Zeković
 
Skupovi
SkupoviSkupovi
Skupovi
 
Zadaci 1 Mat. Inf. - selekcija.pdf
Zadaci 1 Mat. Inf. - selekcija.pdfZadaci 1 Mat. Inf. - selekcija.pdf
Zadaci 1 Mat. Inf. - selekcija.pdf
 
MISS Ponavljanje B 2022.pdf
MISS Ponavljanje B 2022.pdfMISS Ponavljanje B 2022.pdf
MISS Ponavljanje B 2022.pdf
 
Sanela Martinović deljenje sa 3 -
Sanela Martinović     deljenje sa 3 -Sanela Martinović     deljenje sa 3 -
Sanela Martinović deljenje sa 3 -
 
Zadaci za maturski ispit farm lab 2013 14
Zadaci za maturski ispit farm lab 2013 14Zadaci za maturski ispit farm lab 2013 14
Zadaci za maturski ispit farm lab 2013 14
 
Lidija stefanovic matematika iii
Lidija stefanovic matematika iiiLidija stefanovic matematika iii
Lidija stefanovic matematika iii
 
Podsetnik-Skupovi N i No
Podsetnik-Skupovi N i NoPodsetnik-Skupovi N i No
Podsetnik-Skupovi N i No
 
05-zabavna-matematika-za-i-razred-kreativni-centar.pdf
05-zabavna-matematika-za-i-razred-kreativni-centar.pdf05-zabavna-matematika-za-i-razred-kreativni-centar.pdf
05-zabavna-matematika-za-i-razred-kreativni-centar.pdf
 

More from Kristina Babic

Miloš Crnjanski
Miloš CrnjanskiMiloš Crnjanski
Miloš Crnjanski
Kristina Babic
 
Braca karamazovi
Braca karamazoviBraca karamazovi
Braca karamazovi
Kristina Babic
 
Majstor i margarita
Majstor i margaritaMajstor i margarita
Majstor i margarita
Kristina Babic
 
Djerdap
DjerdapDjerdap
Geografija Juzne Koreje, Singapura, Hongkonga i Indije
Geografija Juzne Koreje, Singapura, Hongkonga i IndijeGeografija Juzne Koreje, Singapura, Hongkonga i Indije
Geografija Juzne Koreje, Singapura, Hongkonga i Indije
Kristina Babic
 
Srbija od sticanja nezavisnosti 1878. do Majskog prevrata 1903.
Srbija od sticanja nezavisnosti 1878. do Majskog prevrata 1903.Srbija od sticanja nezavisnosti 1878. do Majskog prevrata 1903.
Srbija od sticanja nezavisnosti 1878. do Majskog prevrata 1903.
Kristina Babic
 

More from Kristina Babic (6)

Miloš Crnjanski
Miloš CrnjanskiMiloš Crnjanski
Miloš Crnjanski
 
Braca karamazovi
Braca karamazoviBraca karamazovi
Braca karamazovi
 
Majstor i margarita
Majstor i margaritaMajstor i margarita
Majstor i margarita
 
Djerdap
DjerdapDjerdap
Djerdap
 
Geografija Juzne Koreje, Singapura, Hongkonga i Indije
Geografija Juzne Koreje, Singapura, Hongkonga i IndijeGeografija Juzne Koreje, Singapura, Hongkonga i Indije
Geografija Juzne Koreje, Singapura, Hongkonga i Indije
 
Srbija od sticanja nezavisnosti 1878. do Majskog prevrata 1903.
Srbija od sticanja nezavisnosti 1878. do Majskog prevrata 1903.Srbija od sticanja nezavisnosti 1878. do Majskog prevrata 1903.
Srbija od sticanja nezavisnosti 1878. do Majskog prevrata 1903.
 

Kombinatorika sa zadacima iz Programiranja

  • 1. KOMBINATORIKA Seminarski iz programiranja Sadržaj  Kombinatotika uvod  Elementi kombinatorike  Binomni koeficijent  Permutacije,varijacije i kombinacije  Paskalov trougao  Katalanovi brojevi i Pojam triangulacije poligona  Ogrlice  Fibonačijev niz  Zadaci  Literatura Uvod Kombinatorika je matematička disciplina koja se bavi problemima postojanja, prebrojavanja i konstrukcije elemenata sa zadatim osobinama u konačnim skupovima. Povezana je sa mnogim drugim granama matematike, poput algebre, teorije verovatnoće i geometrije, kao i sa raznim oblastima u računarstvu i statističkoj fizici. Aspekti kombinatorike uključuju prebrojavanje objekata koji zadovoljavaju određeni kriterijum, određivanje da li neki kriterijum može biti ispunjen, konstruisanje i analiziranje objekata koji ispunjavaju neki kriterijum, nalaženje najvećih, najmanjih ili optimalnih objekata, i nalaženje algebarskih struktura u koje ovi objekti mogu spadati (algebarska kombinatorika). Elementi kombinatorike Prebrojavanje elemenata Broj elemenata nekog skupa A naziva se KARDINALNOST skupa A i obeležava se sa: | 𝐴| = 𝑐𝑎𝑟𝑑( 𝐴) = 𝐴̅
  • 2. Svojstva 1. | 𝐴| = 𝑛 ⇒ | 𝑃(𝐴)| = 2 𝑛 gde P(A) predstavlja partitivni skup skupa A odnosno skup koji se sastoji od svih razlicitih podskupova skupa A a njihov broj jednak je 2 𝑛 . 2. | 𝐴| = 𝑛 𝑖 | 𝐵| = 𝑚 ⇒ | 𝐴 × 𝐵| = 𝑛 ∙ 𝑚 3. | 𝐴 ∪ 𝐵| = | 𝐴| + | 𝐵| − | 𝐴 ∩ 𝐵| 4. | 𝐴 ∪ 𝐵 ∪ 𝐶| = | 𝐴| + | 𝐵| + | 𝐶| − | 𝐴 ∩ 𝐵| − | 𝐵 ∩ 𝐶| − | 𝐴 ∩ 𝐶| + | 𝐴 ∩ 𝐵 ∩ 𝐶| ← | 𝐴 ∪ 𝐵 ∪ 𝐶| 5. | 𝐴1| = 𝑚1,| 𝐴2| = 𝑚2 … | 𝐴 𝑘| = 𝑚 𝑘 ⇒ | 𝐴1 × 𝐴2 × … × 𝐴 𝑘| = 𝑚1 ∙ 𝑚2 ∙ … ∙ 𝑚2 6. | 𝐴| = 𝑛 | 𝐵| = 𝑚 Broj preslikavanja skupa A u skup B ima 𝑚 𝑛 𝑓 = ( 𝑎1 𝑚 𝑎2 𝑚 … 𝑎 𝑛 𝑚 ) Primer: 𝐴 = {1,2} 𝐵 = {3,4,5} 𝑓: ( 1 3 2 3 ) 𝑓: ( 1 3 2 4 ) 𝑓: ( 1 4 2 3 ) 𝑓: ( 1 4 2 4 ) 𝑓: ( 1 4 2 5 ) 𝑓: ( 1 5 2 4 ) 𝑓: ( 1 5 2 5 ) 𝑓: ( 1 3 2 5 ) 𝑓: ( 1 5 2 3 ) | 𝐴| = 2 | 𝐵| = 3 32 = 9 7. Binarnih relacija na skupu A od n elemenata ima 𝑛2 | 𝐴| = 𝑛 | 𝐴× 𝐴| = 𝑛2 | 𝑃(𝐴× 𝐴)| = 2 𝑛2 Osnovni kombinatorni principi na kojima se zasnivaju skoro sva prebrojavanja su: - princip jednakosti: Za konačne skupove A i B i bijekciju f : A → B, važi |A| = |B|, - princip zbira: za disjunktne i konačne skupove A i B važi |A ∪ B| = |A| + |B|. - princip proizvoda: Za konačne skupove A i B važi |A ×B| = |A| · |B|.
  • 3. Binomni koeficijent Binomni koeficijent 𝐶 𝑛 𝑘 je broj razlicitih nacina da se nasumice izabere k od ukupno n predmeta bez obzira na raspored predmeta po setovima odnosno njihovu nesredjenost. U matematici, a posebno u kombinatorici, binomni koeficijent broja n i celog broja k definisan je kao: ( 𝑛 𝑘 ) = 𝑛! 𝑘! ( 𝑛 − 𝑘)! = ∏ 𝑛 + 1 − 𝑖 𝑖 , 𝑛 ≥ 𝑘 ≥ 0 𝑘 𝑖=1 𝑖 ( 𝑛 𝑘 ) = 0 𝑎𝑘𝑜 𝑗𝑒 𝑘 < 0 𝑖𝑙𝑖 𝑘 > 𝑛 Prema Nikolasu Higamu, notaciju ( 𝑛 𝑘 ) je uveo u upotrebu Albert fon Etinghauzen 1826, iako se za ove brojeve znalo vekovima pre toga (Paskalov trougao). Binomni koeficijenti su koeficijenti u razvoju binoma (x + y)n (odatle i naziv): (𝑎 + 𝑏) 𝑛 = ∑ ( 𝑛 𝑘 ) 𝑎 𝑘 𝑏 𝑛−𝑘 𝑛 𝑘=0 𝑜𝑑𝑛𝑜𝑠𝑛𝑜 (𝑎+ 𝑏) 𝑛 = 𝐶 𝑛 0 𝑎 𝑛 +𝐶 𝑛 1 𝑎 𝑛−1 𝑏 + 𝐶 𝑛 2 𝑎 𝑛−2 𝑏 + ⋯+ 𝐶 𝑛 𝑛 𝑏 𝑛 Ovo je generalizovano binomnom teoremom koja dozvoljava da n bude negativan ili realan broj. Permutacije Permutacije mogu da budu bez ponavljanja i sa ponavljanjem. Bez ponavljanja znači da su svi elementi u početnom skupu različiti, dok permutacija sa ponavljanjem znači da neki elementi mogu da se javljaju više puta. Broj permutacija računamo po formuli: 𝑃 = 𝑛! gde je n broj elemenata skupa koji mogu biti izabrani. Ako između n zadanih elemenata ima 𝑘1 jednakih jedne vrste, 𝑘2 jednakih druge vrste, ..., 𝑘 𝑟 jednakih r-te vrste, govorimo o permutacijama s ponavljanjem. Broj permutacija s ponavljanjem od n elemenata jednak je: 𝑃𝑛 𝑘1,𝑘2,…,𝑘 𝑟 = 𝑛! 𝑘1!∙𝑘2!∙…∙𝑘 𝑟!
  • 4. Procedura koja generiše permutacije sa ponavljanjem: (izracunava broj permutacija sa ponavljanjem i stampa sve kombinacije ukoliko je potrebno) Varijacije program permp (input,output); type niz = array [1..20] of char; var a, ta : niz; p: array [1..20] of Boolean; j,n,b: integer; odg: Boolean; odgt: char; procedure stampa; var i:integer; begin b:=b+1; if odg then begin for i:=1 to n do write(ta[i]); writeln; end; end; procedure perm(i,m: integer); var j,k: integer; begin if i<=n then begin k:=1; if i>1 then if a[i]=a[i-1] then k:=m; for j:=k to n do begin if p[j] then begin ta[j]:=a[i]; p[j]:=false; perm(i+1,j+1); p[j]:=true; end; end; end else stampa; end; begin write ('Koliko elemenata: '); readln (n); write ('Unesite elemente tako da oni'); writeln ('koji se ponavljaju budu sukcesivni'); b:=0; for j:=1 to n do begin readln(a[j]); p[j]:=true end; write ('Zelite li ispis? '); readln (odgt); odg:= not ((odgt='N') or (odgt='n')); perm(1,1); writeln ('Ukupno: ', b); end.
  • 5. Varijacije Pretpostavimo da u jednom odeljenju od 25 učenika treba da izaberemo predsednika, sekretara i blagajnika. Dakle, od 25 učenika treba da odaberemo 3 i pritom je važno ko je predsednik, ko sekretar a ko blagajnik u odeljenju. Na koliko načina možemo napraviti ovaj izbor. Ovde su u pitanju varijacije. Od 25 učenika u odeljenju mi biramo samo 3, pa nisu svi učenici izabrani. Takođe, važno je koga ćemo izabrati za predsednika, koga za sekretara a koga za blagajnike, odnosno, bitan je poredak našeg izbora. Varijacije takođe mogu da budu sa i bez ponavljanja. Ako od n početnih elemenata biramo njih r, dobijamo varijacije od n elemenata r-te klase njihov broj označavamo kao 𝑉𝑛 𝑟 Broj varijacija računamo po formuli: 𝑉𝑛 𝑟 = 𝑛( 𝑛 − 1)( 𝑛 − 2)… ( 𝑛 − 𝑟 + 1) = 𝑛! ( 𝑛 − 𝑟)! = 𝐶 𝑛 𝑟 𝑟! U slučaju varijacija sa ponavljanjem imamo formulu: 𝑉𝑛 𝑟̅̅̅̅ = 𝑛 𝑟 gde je n broj elemenata skupa koji mogu biti izabrani, a r broj elemenata koji treba da budu izabrani. Primer : Katanac sa šifrom ima 4 koluta, a na svakom kolutu 10 slova abecede. Na koliko se načina može izabrati šifra za katanac? Traženi broj jednak je broju varijacija s ponavljanjem od 30 elemenata 4. reda: 𝑉30 4̅̅̅̅ = 304 = 810000 Šifra za katanac može se izabrati na 810000 načina. Ili, prema principu uzastopnog prebrojavanja traženi broj možemo dobiti ovako: prvo slovo možemo odabrati na 30 načina (bilo koje slovo naše abecede), drugo slovo također na 30 načina (slova mogu biti i ista tj. mogu se ponavljati), treće na 30 načina i četvrto takođe na 30 načina. Dakle, šifra za katanac može se izabrati na 30 ∙ 30 ∙ 30 ∙ 30 = 810000 načina.
  • 6. Kombinacije Primer: Pretpostavimo sada da o jednom odeljenju od 25 učenika treba odabrati pet predstavnika za Učenički parlament. U ovom slučaju ne mogu svi učenici da budu izabrani (jer od njih 25 biramo samo 5), a poredak nije bitan (jer oba člana parlamenta imaju jednake funkcije). Kombinacije bez ponavljanja od n elemenata r -te klase obeležavamo sa 𝐶 𝑛 𝑟 i računamo po formuli: 𝐶 𝑛 𝑟 = 𝑛! 𝑟! ( 𝑛 − 𝑟)! = 𝐶 𝑛 𝑛−𝑟 Kombinacije sa ponavljanjem članova skupa: 𝐶 𝑛 𝑟̅̅̅ = (𝑛 + 𝑟 − 1)! 𝑟! ( 𝑛 − 1)! = 𝐶 𝑛+𝑟−1 𝑟 = 𝐶 𝑛+𝑟−1 𝑛−1 gde je n broj elemenata skupa koji mogu biti izabrani, a r broj elemenata koji treba da budu izabrani. Primer : U prodavnici se mogu kupiti banane, jabuke i kruške. Na koliko načina možemo kupiti 2 kg voća ako možemo kupiti po kilogram ponuđenog voća? Možemo kupiti 2 kg voća (r=2). U ponudi su: banane, jabuke, kruške (n=3). Poredak odabranog voća nije bitan, a možemo birati i samo jednu vrstu voća (elementi se mogu ponavljati). Traženi broj je broj kombinacija s ponavljanjem od 3 elementa 2. reda: 𝐾3 2̅̅̅̅ = ( 3 + 2 − 1 2 ) = 4! 2! ∙ 2! = 6 Primer 2: U cvećari se prodaju mini ruže, bele rade i ljiljani. Na koliko načina je moguće napraviti buket od 9 cvetova? U ponudi su 3 vrste cveća (n=3), formiramo buket od 9 cvetova (r=9), možemo birati ponovo istu vrstu cveća. Buket možemo napraviti na 𝐾3 9̅̅̅̅ = ( 9 + 3 − 1 9 ) = 11! 9! ∙ 2! = 55 načina.
  • 7. ZAKLJUČCI Sve gore navedeno možemo smestitiu jednu tabelu: Da li su izabrani svi elementi početnog skupa? Da li je bitan poredak među izabranim elementima? Formule za računanje PERMUTACIJE DA DA Bez ponavljanja 𝑃 = 𝑛! Sa ponavljanjem 𝑃𝑛 𝑘1,𝑘2,…,𝑘 𝑟 = 𝑛! 𝑘1!∙𝑘2!∙…∙𝑘 𝑟! VARIJACIJE NE DA Bez ponavljanja 𝑉𝑛 𝑟 = 𝑛! ( 𝑛 − 𝑟)! Sa ponavljanjem 𝑉𝑛 𝑟̅̅̅̅ = 𝑛 𝑟 KOMBINACIJE NE NE Bez ponavljanja 𝐶 𝑛 𝑟 = 𝑛! 𝑟! ( 𝑛 − 𝑟)! Sa ponavljanjem 𝐶 𝑛 𝑟̅̅̅ = (𝑛 + 𝑟 − 1)! 𝑟! ( 𝑛 − 1)!
  • 8. Paskalov trougao Važna rekurzivna relacija C(n,k)+C(n,k+1)=C(n+1,k+1) sledi direktno iz definicije binomnog koeficijenta. Ovom relacijom, i matematičkom indukcijom se može dokazati da je C(n,k) prirodni broj, za svako n i k (što nije najočiglednije odmah iz definicije). Na taj nacin se konstruise paskalov trougao: red 1 1 red 2 1 1 red 3 1 2 1 red 4 1 3 3 1 red 5 1 4 6 4 1 red 6 1 5 10 10 5 1 red 7 1 6 15 20 15 6 1 red 8 1 7 21 35 35 21 7 1 red 9 1 8 28 56 70 56 28 8 1 Ponavljanje formula: (koja je povezana s Pascalovim trouglom): 𝐶 𝑛 𝑘 = 𝐶 𝑛−1 𝑘−1 + 𝐶 𝑛−1 𝑘 Binomni koeficijenti su od velike važnosti u kombinatorici jer nude gotove formule za česte probleme prebrojavanja:  Svaki skup sa n poseduje tačno ( 𝑛 𝑘 ) različitih podskupova koji imaju k elemenata  Broj binarnih brojeva dužine n koje sadrže k jedinica i n − k nula je ( 𝑛 𝑘 ).  Broj binarnih brojeva koji sadrže k jedinica i n nula tako da nikoje dve nisu susedne je ( 𝑛+1 𝑘 ).  Broj različitih sekvenci od n prirodnih brojeva čiji je ukupni zbir k je ( 𝑛+𝑘−1 𝑘 ); ovo je takođe broj različitih načina da se iz skupa sa n elemenata izabere k elemenata ukoliko je dozvoljeno ponavljanje.
  • 9. Formule sa binomnim koeficijentima Neke od veoma korisnih formula:  Pravilo simetrije: 𝐶 𝑛 𝑘 = 𝐶 𝑛 𝑛−𝑘  Dodavanje-nametanje: 𝐶 𝑛 𝑘 = 𝑛 𝑘 𝐶 𝑛−1 𝑘−1  Zbir nad k: ∑ 𝐶 𝑛 𝑘 = 2 𝑛 𝑛 𝑘=0  Zbir nad n: ∑ 𝐶 𝑚 𝑘 = 𝐶 𝑛+1 𝑘+1 𝑛 𝑚=0  Zbir preko n i k: ∑ 𝐶 𝑛+𝑘 𝑘 = 𝐶 𝑛+𝑚+1 𝑚 𝑚 𝑘=0  Sumirajuci kvadrati: (𝐶 𝑛 0 )2 + (𝐶 𝑛 1 )2 + ⋯ + ( 𝐶 𝑛 𝑛)2 = 𝐶2𝑛 𝑛 Dokaz: ∑ ( 𝑛 𝑘 ) 2 𝑛 𝑘=0 = ( 2𝑛 𝑛 ) Logički dokaz: ( 𝑛 𝑘 ) 2 = ( 𝑛 𝑘 ) ( 𝑛 𝑛 − 𝑘 ) Ako bi sabrali sve, to bi izgledalo ovako: ( 𝑛 0 ) ( 𝑛 𝑛 ) + ( 𝑛 1 ) ( 𝑛 𝑛 − 1 ) + ⋯ + ( 𝑛 𝑛 ) ( 𝑛 0 )
  • 10. Moze se zamisliti kao o izboru n ljudi iz grupe od 2n(Mozemo izabrati k ljudi iz jedne i n-k ljudi iz 2. grupe. Ovo radimo za k=1,2,…n.)  Pondirani zbir: 1𝐶 𝑛 1 + 2𝐶 𝑛 2 + ⋯+ 𝑛𝐶 𝑛 𝑛 = 𝑛2 𝑛−1 Dokaz: Mozemo dokazati pomoću matematičke indukcije. Za n = 1, nije potrebno dokazivati jer je onda n=k pa će leva strana svakako biti jednaka desnoj=1: (2) indukcijska pretpostavka: C(k, 1) + 2·C(k, 2) + 3·C(k, 3) + ... + k·C(k, k) = k2k-1. Ako levu stranu ip.(2) označimo sa S(k), i iskoristimo adicionu formulu za k+1 dobijamo: S(k+1) = C(k+1, 1) + 2·C(k+1, 2) + 3·C(k+1, 3) + ... + (k+1)·C(k+1, k+1) = 1·(C(k, 0) + C(k, 1)) + 2·(C(k, 1) + C(k, 2)) + ... + k·(C(k, k-1) + C(k, k)) + (k+1)C(k, k) = 1·C(k, 0) + 3·C(k, 1) + 5·C(k, 2) + ... + (2k+1)C(k, k) = (C(k, 0) + C(k, 1) + C(k, 2) + ... + C(k, k)) + 2·S(k) = 2k + 2·k·2k-1 = (k + 1)·2k.  Zbir sa Fibonacijevim brojevima: 𝐶 𝑛 0 + 𝐶 𝑛−1 1 + ⋯ + 𝐶 𝑛−𝑘 𝑘 + ⋯+ 𝐶0 𝑛 = 𝐹𝑛 +1 Dokaz: Dijagonalnim sabiranjem brojeva iz Paskalovog trougla dobijamo Fibonaccijev niz.
  • 11. Katalanovi brojevi Katalanovi brojevi (Cn) predstavljaju niz brojeva koji se prvenstveno koriste u geometriji, ali se ovaj niz pojavljuje i kao rešenje velikog broja kombinatornih problema. Prvi put ih je otkrio Leonard Ojler (Leonhard Euler, 1707-1783) tražeći opšte rešenje za broj različitih načina na koji se jedan mnogougao može podeliti na trouglove. Pritom je trebalo voditi računa da se ne koriste dijagonale mnogougla koje se međusobno seku. Međutim, ovi brojevi su ipak dobili ime po belgijskom matematičaru Ežen Sarl Katalanu (Eugene Charles Catalan, 1814–1894) koji je otkrio vezu između ovih brojeva i problema korektnih nizova n parova zagrada. Katalanovi brojevi se izraunavaju po sledećoj formuli [39]: 𝐶 𝑛 = 1 𝑛 + 1 𝐶2𝑛 𝑛 = (2𝑛)! ( 𝑛 + 1)! 𝑛! , 𝑧 𝑎 𝑛 ≥ 0 gde važi da je n broj trouglova na koje se može podeliti dati poligon. Cesto se koristi i sledeći alternativni izraz za definiciju Katalanovih brojeva: ( 2𝑛 𝑛 ) − ( 2𝑛 𝑛 + 1 ) = (2𝑛)! ( 𝑛!)2 − (2𝑛)! ( 𝑛 − 1)!( 𝑛 + 1)! = (2𝑛)! 𝑛! ( 𝑛 + 1)! = 𝐶 𝑛 𝑜𝑑𝑛𝑜𝑠𝑛𝑜 𝐶 𝑛 = 𝐶2𝑛 𝑛 − 𝐶2𝑛 𝑛−1 , 𝑧𝑎 𝑛 ≥ 0 Rekurzivna formula Katalonovi brojevi zadovoljavaju rekurziju: 𝐶0 = 1, 𝐶 𝑛+1 = ∑ 𝐶𝑖 𝑛 𝑖=0 𝐶 𝑛−𝑖 𝑧𝑎 𝑛 ≥ 0 𝑜𝑑𝑛𝑜𝑠𝑛𝑜 𝐶𝑛 = ∑ 𝐶𝑖 𝑛−1 𝑖=0 𝐶 𝑛−1−𝑖 𝑎 𝑝𝑜š𝑡𝑜 𝑗𝑒 𝐶2𝑛 𝑛 = ∑(𝐶 𝑛 𝑖 )2 𝑛 𝑖=0 , 𝑜𝑛𝑑𝑎 𝑗𝑒: 𝐶 𝑛 = 1 𝑛 + 1 ∑(𝐶 𝑛 𝑖 )2 𝑛 𝑖=0 Katalonovi brojevi zadovoljavaju i sledeću rekurziju: 𝐶0 = 1, 𝐶 𝑛+1 = 2(2𝑛 + 1) 𝑛 + 2 𝐶 𝑛
  • 12. Svojstva Generirajuća funkcija Katalanovih brojeva je: ∑ 𝐶 𝑛 ∞ 𝑛=0 𝑧 𝑛 = 1 − √1 − 4𝑧 2𝑧 Asimptotska vrednost je: 𝐶 𝑛~ 4 𝑛 𝑛3 2⁄ √ 𝜋 Katalanovi brojevi se još mogu izraziti i Segnerovom rekurzivnom formulom kao i Bertrandovom ballot teoremom. Tabela sadrži Katalanove brojeve za vrednosti n ∈ {1, 2, ..., 30}, koji se izračunavaju po formuli. Primena Pojam triangulacije poligona Triangulacija poligona je istorijski veoma star problem koji je doveo do otkrića Katalanovih brojeva. Pri određivanju svih triangulacija poligona mora biti razmotren i oblik poligona. Ovo čini problem izračunavanja veoma teškim. Problem može biti smanjen tako što se ograničavamo na proračune vezane za konveksne poligone. Za konveksne poligone sve dijagonale su uvek unutrašnje dijagonale. U ovom slučaju broj triangulacija konveksnog poligona je nezavisan od oblika i može biti jedinstveno okarakterisan brojem temena n. Pod triangulacijom konveksnog poligona podrazumevamo razlaganje unutrašnjosti poligona na trouglove, međusobno nepresecajućim unutrašnjim dijagonalama. Kod ovog problema se zapravo razmatra broj triangulacija, gde je moguća maksimalna podela konveksnog poligona na n − 2 trougla. Na slici su predstavljeni neki načini rešavanja ovog problema.
  • 13. Triangulacija poligona sa n temena zahteva podelu na trouglove sa n − 3 unutrašnjih dijagonala koje se ne ukrštaju. Primer 2 Potpuno binarno stablo, gde svaki otac ima najviše dva sina može da predstavlja primer za Katalanove brojeve. Katalanov broj 𝐶 𝑛 je broj potpunih binarnih stabala sa n+1 listom. Ogrlice Problem "ogrlice" - jedan je od klasičnih problema u kombinatorici. Potrebno je izračunati koliko postoji različitih ogrlica od n kuglica, od kojih svaka može biti jedne od k boja. Ogrlica se moze rotirari (ciklicno pomerati) ali se ne sme menjati njihov redosled u ogrlici. Rešenje U ovom zadatku, odmah možemo naći neku grupu invarijantne permutacije. Očigledno je da će se sastojati od n permutacija: 𝜋0 = 1 2 3 . . . 𝑛 𝜋1 = 2 3 . . . 𝑛 1 𝜋2 = 3 . . . 𝑛 1 2 . . . 𝜋 𝑛−1 = 𝑛 1 2 . . .(𝑛 − 1)
  • 14. Hajde da nadjemo eksplicitnu formulu za izračunavanje 𝐶(𝜋𝑖). Možemo zaključiti da je i – ta permutacija na j-tom mestu jednaka i+j (po modulu n ako je zbir veći od n) ali ako u obzir uzmemo strukture i-tih permutacija, mozemo videti da se u njima pojavljuje jedinica 1+i koja zatim prelazi u 1+2i, pa 1+3i i tako dalje sve do 1+kn. Odatle mozemo zakljuciti da svi ciklusi imaju iste dužine koje su jednake nzd(i,n)/i, odnosno n/nzs(i,n). Tada će broj ciklusa do i-te permutacije biti nzs(i,n) Zamenom ovih vrednosti u Polyevoj teoremi dobijamo: 𝐴𝑛𝑠 = 1 𝑛 ∑ 𝑘 𝑛𝑧𝑠(𝑖,𝑛) 𝑛 𝑖=1 Fibonačijev niz Fibonačijev niz je matematički niz primećen u mnogim fizičkim, hemijskim i biološkim pojavama. Početkom XIII veka Leonardo Fibonacci (1180-1240) je upoznao Evropu sa radovima indijsko-arapskih matematičara, a time neposredno i kineskih. On je u svojoj raspravi Liber abaci 1202. godine izložio praktičan aritmetički problem: ˝Koliko pari zečeva će reprodukovati jedan par za godinu dana ako se pretpostavi da svakog meseca jedan par rodi novi par koji za dva meseca postane reproduktivan?˝ Zanimljiv je redosled brojeva do kojeg je došao proučavajući razmnožavanje zečeva. Rešavanjem ovog zadatka dobio je niz brojeva na sledeći način: prvog meseca eksperiment počinje jednim parom zečeva, u drugom mesecu će postojati samo taj jedan par, u trećem mesecu će ih biti 2, u četvrtom 3, u petom 5, u šestom 8 itd. Ovom nizu brojeva je francuski matematičar Edvard Lucas (1842-1891) dao ime Fifonaccijevi brojevi i otkrio njihove važne primene. Fibonaccijevi brojevi ili, kako ih često nazivamo, Fibonaccijev niz je vrsta rekurzivnog niza u kojem zbir dva prethodna člana daje sledeći broj. Oznaka člana u nizu F1 F2 F3 F4 F5 F6 F7 Fibonaccijev niz 1 1 2 3 5 8 13 Fibonaccijevi brojevi su najjednostavnija vrsta rekurzivnog niza. U ovom rekurzivnom nizu za formiranje n-tog člana reda moramo znati dva člana koji mu prethode. Dakle, za poznavanje ovog niza su najvažnija prva dva člana F1 i F2, jer se ostali članovi mogu dobiti iz relecije: 𝑓1 = 1 𝑓2 = 1 𝑓𝑛 = 𝑓𝑛−1+𝑓𝑛−2, 𝑛 ≥ 2 Što se tiče rekurzivne funkcije za odredjivanje n-tog člana ovog niza, ona bi glasila ovako:
  • 15. function fib(n:longint):longint; begin if n=0 then fib:=0; if n<=2 then fib:=1 else fib:=fib(n-1)+fib(n-2); end; Zadaci Igra sa brojevima (www.spoj.com/problems) Mali Ciko voli da igra sledeću igru sa brojevima: 1. On izabere broj N i skup od K prirodnih brojeva 2. Zatim ispiše sve brojeve od 1 do N 3. Izabere prvi od K brojeva iz skupa i poništava sve brojeve od 1 do N koji su njime deljivi ukljucujuci i sam broj 4. Ponavlja korak 3 za sve brojeve iz skupa Jednog dana mali Ciko je bio raspoložen igra ovu igru sa svojim bratom. Medjum njegov brat je zakomplikovao igru tako što je uveo jos jedan korak i zamolio ga da sazna broj celih brojeva koji nisu poništeni na kraju igre a on sada traži vašu pomoć.. Unos: 10, 3 2, 4, 5 Ispis: 4 ( brojevi 1, 3, 7, 9 nisu izbrisani) program p1; var a,b:array[1..100] of longint; n,k,i,j,s:longint; begin read(n,k); for i:=1 to k do read(a[i]); for j:=1 to n do begin b[j]:=j; for i:=1 to k do if (b[j]>0) and (b[j] mod a[i]=0) then b[j]:=0; end; for i:= 1 to n do if b[i]>0 then s:=s+1; write(s); end.
  • 16. Timovi (codeforces #478b) n učesnika takmičenja podeljeno je u m timova na neki način tako da svaka ekipa ima najmanje jednog takmičara. Nakon takmičenja, svaki par učesnika iz iste ekipe se sprijateljio. Potrebno je pronaći minimalan i maksimalan broj parova prijatelja koji može biti formiran do kraja takmičenja. Program p1; var m,n,a,b,min,max:int64; begin read(n,m); a:=n div m; b:=n mod m; min:= (a-1)*a div 2*(m-b)+a*(a+1) div 2*b; max:= ((n-m+1)*(n-m)) div 2 write(min,' ',max); end. Sofi i cveće (codeforces #322b) Sofi ima cveće: p crvenih, q zelenih i r plavih cvetova. Ona treba da napravi bukete od ovog cveća i to na 4 načina: Crveni buket sastoji se od 3 crvena, plavi od 3 plava, zeleni od 3 zelena a mešani buket od po 1 crvenog, plavog i zelenog cveta. Potrebno je odrediti maksimalan broj buketa koje Sofi može da napravi. Unos: 4, 4, 4 Ispis: 4 Unos: 2: 3, 6, 9 Ispis:6 Program p; var s,i,max,ans,x,y,z,l,k,m,n:longint; begin read(x,y,z); for s:=3 downto 0 do if (x-s>=0) and (y-s>=0) and (z-s>=0) then begin ans:=s+(x-s) div 3+(y-s) div 3+(z-s) div 3; if (ans>max) then max:=ans; end; writeln(max); end.
  • 17. Svemirski kod(www.spoj.com/problems) Stanko voli svemirska putovanja, ali on je siromasan programer i nikada neće moći da kupi svoju svemirsku letelicu. Zato je odlučio da je ukrade od Petra. Medjutim, postoji jedan problem-Petru je letelica zaključana šifrom na osnovu broja zvezda iz galaksije Mlečnog puta. Za razbijanje ovog sistema Stanko mora da proveri svaki podskup od četri zvezde čiji je zajednički delilac 1.. Srećom, on je uspeo da ograniči broj zvezda na n. Pomozite mu da pronadje koliko postoji ovakvih sistema? Ulaz U prvoj liniji ulaza tat je broj n<10000 dok se druga linija sastoji od maticnih brojeva svake od n zvezda.. Unos Izlaz 4 2 3 4 5 1 4 2 4 6 8 0 7 2 3 4 5 6 7 8 34 Program p1; var n,i,j,k,l,p,s:longint; a:array[1..1000] of longint; begin read(n); for i:=1 to n do read(a[i]); for i:=1 to n-3 do for j:=i+1 to n-2 do for k:=j+1 to n-1 do for l:=k+1 to n do for p:=2 to a[i] do begin if (a[i] mod p=0) and (a[j] mod p=0) and (a[k] mod p=0) and (a[l] mod p=0) then break else if p=a[i] then s:=s+1; end; write(s, ' '); end.
  • 18. ZADATAK: Naš mali Draganče se našao u nevolji. Pre par nedelja se dogovorio sa drugarima da na leto ide na more u Abenishbe, ali je ubrzo shvatio da nema dovoljno para. Pa je odlučio da se zaposli i da zaradi te pare. Pošto ga niko nije shvatio ozbiljno da sa 10 godina ume da programira, morao je da se zaposli na nekom mnogo manje zanimljivom mestu - u prodavnici nakita. U toj prodavnici imaju jako veliki izbor - ogrlice, minđušhe, narukvice, prstenje... Našem malom Dragančetu za oko su posebno zapale ogrlice od perli. Perle su poređane u krug, i sa nekih perli iz kruga visi još po jedna niska perli. Svake dve susedne perle su povezane malim konchićem (i sa kruga i sa niski). Draganče je primetio da je ogrlica jako uska, tako da retko koja mušterija može da je stavi oko vrata, tako da i oni kojima se svidi, odustanu posle probavanja. Draganče je smislio kako da reši problem! Makazama će preseći jedan končić (koji spaja dve perle sa kruga), i neke dve perle će da spoji končićem. Tako će da dobije ogrlicu istog tipa - krug sa visećim niskama perli. Poshto već par nedelja nije ništa programirao, jer svaki dan sedi u prodavnici, zamolio vas je da mu pomognete, i izračunate koliki najveći krug na ogrlici može da dobije, sa jednim sečenjem i jednim spajanjem. Naravno, kada bi znao najveći krug, mogao bi svakoj ogrlici da poveća krug, i samim tim poveća broj mušterija. Ulaz: (Ulazni podaci se nalaze u datoteci ogrlica.in) U prvom redu ulazne datoteke se nalazi broj n (n≤ 500000) koji predstavlja broj perli na krugu. U sledećem redu su dva broja, k i m (k≤ 10000, m≤ 10000000). U sledećih k redova se nalazi po jedan ceo broj niza xi (xi≤ 2*m). Niz ai izračunajte koristeći doele navedeni segment programa (niz xi ima k elemenata i njhovi indeksi su od 0 do k-1, a ai ima n elemenata i njihovi indeksi su od 0 do n-1): Za Pascal programere bi segment imao sledeći izgled: j := 0; for i := 0 to n-1 do begin a[i] := x[j]; s := (j+1) mod k; x[j] := ((x[j] xor x[s]) + 13) mod m; j := s; end; U ovom kodu je xor oznaka za bitovnu eksluzivnu disjunkciju koja postoji kao operacija u Rascal-u. Broj ai predstavlja broj perli u niski ispod i-te perle na krugu. Rešenje ne zavisi od gornje formule, u njoj ne postoje zavisnosti koje bi vam pomogle u rešavanju. Ona služi da ulazna datoteka ne bude prevelika, da bi mogla da se učita u vremenskom ograničenju. Izlaz: (Izlazne podatke upisati u datoteku ogrlica.out) U prvi red izlazne datoteke ispisati jedan ceo broj - broj perli u najvećem krugu koji se može dobiti jednim sečenjem i jednim spajanjem dve perle date ogrlice. Primer 1: ogrlica.in ogrlica.out 12 12 5 3,0,3,2,2,0,2,0,1,0,1 17 ,0 Objašnjenje: Ogrlica je prikazana na slici ispod odgovora. Nizovi x i a su identični. Ako presečemo između 2. i 3. perle sa kruga, i spojimo poslednje perle iz niski ispod 2. i 3. perle, dobijamo dužinu 12 + 3 + 2 = 17
  • 19. #include <stdio.h> const int maxn = 1000000; int x[200]; int a[maxn]; int best[2*maxn]; int koji[2*maxn]; void gen(int* x, int k, int* p, int n, int m) { int i,j = 0; for (i = 0; i < n; i++) { a[i] = x[j]; printf("niz %dn", a[i]); int s = (j+1) % k; x[j] = ((x[j] ^ x[s]) + 13) % m; j = s; } } int main() { int i,j,k,n,m,poc,kraj,res; freopen("ogrlica.in","r",stdin); freopen("ogrlica.out","w",stdout); scanf("%d", &n); scanf("%d %d", &k, &m); for (i=0;i<k;i++) scanf("%d", &(x[i])); gen(x,k,a,n,m); best[0] = n + a[0]; koji[0] = 0; poc = 0; kraj = 0; for (i=1;i<n;i++) { while (kraj >=poc && best[kraj]<n-i+a[i]) kraj--; kraj++; best[kraj] = n-i+a[i]; koji[kraj] = i; } res = a[n-1] + best[poc]; for (i = 0;i<n;i++) { if (koji[poc]==i) poc++; while (kraj >=poc && best[kraj]<-i+a[i]) kraj--; kraj++; best[kraj] = -i+a[i]; koji[kraj] = i; int tr = a[i] + i + 1 + best[poc]; res = res>tr?res:tr; } printf("%dn", res); return 0; }
  • 20. Pečat Data je matrica n*m koja je popunjena crnim i belim poljima. Odrediti koliko ce biti crnih polja nakon sto se pecat redom udari k puta po glavnoj dijagonali. Odrediti n-ti clan fibonacijevog niza: Odrediti n-ti katalanovbroj: (𝐶 𝑛 = 𝐶2𝑛 𝑛 − 𝐶2𝑛 𝑛−1 ) : program p1; type niz=array[1..100,1..100] of integer; var a:niz; p,k,m,n,i,j,o,q:integer; begin read(n,m,k); for i:=1 to n do for j:=1 to m do read(a[i,j]); p:=0; for i:=1 to n do for j:=1 to m do if (a[i,j]=1) and ((i=1) or (j=1)) then p:=p+k else if (a[i,j]=1) then begin q:=0; o:=0; repeat q:=q+1; if (a[i,j]=a[i-q,j-q]) then o:=o+1; until (i-q=0) or (j-q=0) or (a[i,j]=a[i-q,j-q]); if (o=0) then p:=p+k else if (o=1) and (q=1) then p:=p+1 else if (q>k) then p:=p+k else if (q>1) then p:=p+q; end; writeln(p); end. program p1; var n:integer; function fib(n:integer):integer; begin if n<=2 then fib:=1 else fib:=fib(n-1)+fib(n-2); end; begin read(n); write (fib(n)); end. function aa(n:longint):int64; begin if n<0 then begin writeln(’ne postoji’); halt; end; if n<=1 then aa:=1 else aa:= ( (2*n)! div (n!*n!) ) – ( (2*n)! div (n+1)!(n-1)! ); end;
  • 21. ZADATAK: Rade zeli da proba da svira klavir. Nakon sto je odabrao n crnih i k belih dirki, on zeli da odsvira sve melodije od m tonova koje se mogu proizvesti uz pomoc ovih n+k dirki pri cemu on zeli da crne i bele dirke koristi naizmenicno. Koliko je ovakvih kombinacija? 1. Ako tonovi ne mogu da se ponavljaju 2. Ako tonovi mogu da se ponavljaju Dreamooni wi-fi (codeforces #476b) Dreamoon stoji na 0 poziciji brojevne prave. Drazil šalje listu komandi na njegov smartphone preko wi-fi-a i Dreamoon ih prati. Ima dve vrste naredbi: 1. + znači da krene 1 korak u pozitivnom smeru 2. - znači da krene 1 korak u negativnom smeru Ali Wi-Fi signal je veoma slab pa Dreamoon-ov telefon izbacuje neke greške ili ne može da ucita neku komandu. Zato Dreamoon odlučuje da prati komande koje njegov telefon učita a da za ostale baca novčic i ide nasumično. Vama su date: Originalna lista koju je Drazil poslao Dreamoonu i Lista koj mu je stigla. Koja je verovatnoća da ce Dreamoon stići na poziciju koju mu je Drazil poslao? Primer: unos ++-+- +-+-+ Program p1; var n,k,l,m:longint; function fakt(a,l:longint):longint; begin if l=0 then fakt:=1 else fakt:=a*fakt(a-1,l-1); end; function st(a,l:longint):longint; begin if l=0 then st:=1 else st:=a*st(a,l-1); end; begin read(n,k,m); l:=m div 2; if m mod 2=0 then writeln(fakt(n,l)*fakt(k,l)*2) else writeln(fakt(n,l)*fakt(k,l+1)+fakt(k,l)*fakt(n,l+1)); if m mod 2=0 then writeln(st(n,l)*st(k,l)*2) else writeln(st(n,l)*st(k,l+1)+st(n,l+1)*st(k,l)); end.
  • 22. ispis 1.000000000000 unos +-+- +-?? ispis 0.500000000000 unos +++ ??- ispis 0.000000000000 Program p1; var s1,s2:string; ans,kol,f:int64; i,n:longint; procedure tt(i,sum:longint); begin if i=n+1 then begin inc(kol); if sum=f then inc(ans); exit; end; if s2[i]='+' then tt(i+1,sum+1) else if s2[i]='-' then tt(i+1,sum-1) else begin tt(i+1,sum+1); tt(i+1,sum-1); end; end; begin readln(s1); readln(s2); n:=length(s1); for i:=1 to n do if s1[i]='+' then inc(f) else dec(f); tt(1,0); writeln(ans/kol:0:9); end.
  • 23. Svet je pozorište (codeforces #131c) Postoji n dečaka i m devojaka koji bi dolazili u pozorišni klub. Da bi osmislili predstavu oni treba da odaberu grupu koja sadrži tačno m glumaca koji sadrže ne manje od 4 dečaka i ne manje od jedne devojke. Na koliko načina mogu da odaberu grupu? Naravno varijante koje se razlikuju u sastavu grupe smatraju se drugačije. Pronaći broj načina. Улазни Linija ulaznih podataka sadrži tri cela broja n, m, t ( 4 ≤  n  ≤ 30, 1 ≤  m  ≤ 30, 5 ≤  т  ≤  n  +  t ). Primer улазни 5 2 5 излаз 10 улазни 4 3 5 излаз 3 Program p1; var a:array[0..100,0..100] of int64; n,m,i,j,t:longint; ans:int64; begin readln(n,m,t); for i:=0 to 60 do begin a[i,0]:=1; for j:=1 to i do a[i,j]:=a[i-1,j]+a[i-1,j-1]; end; for i:=4 to t-1 do ans:=ans+(a[n,i]*a[m,t-i]); writeln(ans); end.
  • 24. Poenina liniji (codeforces #251a) Mali Peja mnogo voli da skuplja poene. Nedavno mu je majka dala n tačaka na liniji OX . Sada Peja treba da odredi koliko postoji načina da se odaberu tri tačke tako da razdaljina izmedju dve najduže ne prelazi d. Ulaz Prva linija sadrži dva inegera: n i d (1 ≤ n ≤ 105; 1 ≤ d ≤ 109). Druga linija sadrži n integera x1, x2, ..., xn, koji ne smeju da prelaze 109 — na x kordinantnoj osi. Primer: unos 4 3 1 2 3 4 ispis 4 unos 4 2 -3 -2 -1 0 ispis 2 unos 5 19 1 10 20 30 50 ispis 1 Program p1; var a,b:array[1..100000] of longint; n,i,d,l:longint; p,s:int64; begin read(n,d); for i:=1to n do read(a[i]); l:=1; for i:=1to n do begin while((l<=n)and(a[l]-a[i]<=d))do inc(l); p:=l-i-1; s:=s+((p*(p-1)) div 2) end; write(s) end.
  • 25. Literatura: 1. http://e-maxx.ru/algo/ 2. http://www.wikipedia.org/ 3. http://codeforces.com/problemset 4. http://free-zg.t-com.hr/Vesna_Erceg/Kombinatorika/KOMB_kombinacije2.htm 5. http://www.cut-the- knot.org/arithmetic/combinatorics/ProofsForBinomialIdentity.shtml 6. http://math.stackexchange.com/questions/148583/combinatorial-proof-of- summation-of-sum-k-0n-n-choose-k2-2n-choose 7. http://milan.milanovic.org/math/srpski/andrej/Phi.pdf 8. Analiza sa algebrom 1 9. http://www.dejanristanovic.com/refer/kombin.htm 10. http://www.spoj.com/problems/classical/ 11. https://matematikon.wordpress.com/2012/02/18/kombinatorika-na-laksi-nacin/ 12. http://www.pmf.ni.ac.rs/pmf/doktorati/doc/2013-12-10-sm.pdf 13. http://www.seminarski-diplomski.co.rs/MATEMATIKA/Broj-Phi-i-Fibonacijev- niz.html