Možne kombinacije. Kombinatorične formule. Kombinacije in teorija verjetnosti

Število kombinacij

Kombinacija od n Avtor: k imenovan niz k elementov, izbranih iz podatkov n elementi. Skupine, ki se razlikujejo le po vrstnem redu elementov (ne pa tudi po sestavi), se štejejo za enake, zato se kombinacije razlikujejo od umestitev.

Eksplicitne formule

Število kombinacij n Avtor: k enak binomskemu koeficientu

Za fiksno vrednost n tvorna funkcija števil kombinacij s ponovitvami iz n Avtor: k je:

Dvodimenzionalna generirajoča funkcija števila kombinacij s ponovitvami je:

Povezave

  • R. Stanley Naštevalna kombinatorika. - M.: Mir, 1990.
  • Izračunajte število kombinacij na spletu

Fundacija Wikimedia. 2010.

Oglejte si, kaj je "Število kombinacij" v drugih slovarjih:

    70 sedemdeset 67 68 69 70 71 72 73 40 50 60 70 80 90 100 Faktorizacija: 2×5×7 Rimski zapis: LXX Binarno: 100 0110 … Wikipedia

    Svetlo število, pogojno število, ki edinstveno izraža zunanje pogoji med fotografiranjem (običajno svetlost motiva in fotoobčutljivost uporabljenega fotografskega materiala). Vsako vrednost E. h. lahko izberete večkrat. kombinacije števila zaslonke... ... Veliki enciklopedični politehnični slovar

    Oblika števila, ki razlikuje dva predmeta tako glede na en sam predmet kot tudi glede na več predmetov. Ta oblika v sodobni ruščini ne obstaja, vendar ostajajo ostanki njenega vpliva. Torej, kombinacije dveh tabel (prim. množina... ... Slovar jezikoslovnih izrazov

    Kombinatorična matematika, kombinatorika, veja matematike, ki se ukvarja z reševanjem problemov izbire in razporejanja elementov določene, navadno končne množice v skladu z danimi pravili. Vsako tako pravilo določa način gradnje... ... Matematična enciklopedija

    V kombinatoriki je kombinacija by niz elementov, izbranih iz danega niza, ki vsebuje različne elemente. Nabori, ki se razlikujejo le po vrstnem redu elementov (ne pa tudi po sestavi), se štejejo za enake, te kombinacije ... ... Wikipedia

    Ukvarja se s preučevanjem dogodkov, katerih nastanek ni z gotovostjo znan. Omogoča nam presojo razumnosti pričakovanja pojava nekaterih dogodkov v primerjavi z drugimi, čeprav je dodeljevanje številčnih vrednosti verjetnosti dogodkov pogosto nepotrebno... ... Collierjeva enciklopedija

    1) enako kot matematična kombinatorna analiza. 2) Del elementarne matematike, povezan s preučevanjem števila kombinacij, pod določenimi pogoji, ki jih je mogoče sestaviti iz dane končne množice predmetov... ... Velika sovjetska enciklopedija

    - (grško paradoxos nepričakovano, čudno) v širšem pomenu: izjava, ki močno odstopa od splošno sprejetega, uveljavljenega mnenja, zanikanje tega, kar se zdi "brezpogojno pravilno"; v ožjem smislu dve nasprotujoči si trditvi, za... ... Filozofska enciklopedija

    - (ali načelo vključitev in izključitev) kombinatorna formula, ki vam omogoča, da določite kardinalnost unije končnega števila končnih množic, ki se v splošnem primeru lahko sekajo med seboj ... Wikipedia

    Matematična teorija, ki se ukvarja z določanjem števila različnih načinov porazdelitve danih predmetov v znanem vrstnem redu; je še posebej pomembno v teoriji enačb in teoriji verjetnosti. Najenostavnejše tovrstne naloge so... ... Enciklopedični slovar F.A. Brockhaus in I.A. Ephron

knjige

  • angleški učbenik. V dveh delih. 2. del, N. A. Bonk, G. A. Kotiy, N. A. Lukyanova. Knjiga je drugi del angleškega učbenika. Sestavljen je iz 20 lekcij, slovnice za lekcijo po lekciji in referenčnih slovničnih tabel. Obseg novih leksikalnih...

Kombinatorika je veja matematike, ki preučuje vprašanja o tem, koliko različnih kombinacij je pod določenimi pogoji mogoče sestaviti iz danih predmetov. Osnove kombinatorike so zelo pomembne za ocenjevanje verjetnosti naključnih dogodkov, saj Prav ti nam omogočajo, da izračunamo načeloma možno število različnih scenarijev razvoja dogodkov.

Osnovna formula kombinatorike

Naj obstaja k skupin elementov in i-to skupino sestavlja n i elementov. Iz vsake skupine izberimo en element. Potem je skupno število N načinov, na katere je mogoče narediti takšno izbiro, določeno z razmerjem N=n 1 *n 2 *n 3 *...*n k .

Primer 1. Razložimo to pravilo s preprostim primerom. Naj obstajata dve skupini elementov, prva skupina je sestavljena iz n 1 elementov, druga pa iz n 2 elementov. Koliko različnih parov elementov je mogoče sestaviti iz teh dveh skupin, tako da par vsebuje en element iz vsake skupine? Recimo, da smo vzeli prvi element iz prve skupine in, ne da bi ga spremenili, šli skozi vse možne pare, pri čemer smo spremenili samo elemente iz druge skupine. Za ta element je lahko n 2 takih parov. Nato vzamemo drugi element iz prve skupine in tudi zanj sestavimo vse možne pare. Tudi takih parov bo n 2. Ker je v prvi skupini le n 1 elementov, bo skupno število možnih možnosti n 1 *n 2 .

Primer 2. Koliko trimestnih sodih števil lahko sestavimo iz števk 0, 1, 2, 3, 4, 5, 6, če se števke lahko ponavljajo?
rešitev: n 1 =6 (ker lahko kot prvo števko vzamete poljubno število od 1, 2, 3, 4, 5, 6), n 2 =7 (ker lahko kot drugo števko vzamete katero koli število od 0, 1, 2 , 3, 4, 5, 6), n 3 =4 (ker lahko katero koli številko od 0, 2, 4, 6 vzamemo kot tretjo števko).
Torej, N=n 1 *n 2 *n 3 =6*7*4=168.

V primeru, ko so vse skupine sestavljene iz enakega števila elementov, tj. n 1 =n 2 =...n k =n lahko predpostavimo, da je vsak izbor narejen iz iste skupine in element po izboru se vrne v skupino. Potem je število vseh selekcijskih metod n k . Ta metoda izbire v kombinatoriki se imenuje vzorci z vračilom.

Primer 3. Koliko štirimestnih števil lahko sestavimo iz števk 1, 5, 6, 7, 8?
rešitev. Za vsako števko štirimestnega števila je pet možnosti, kar pomeni N=5*5*5*5=5 4 =625.

Razmislite o množici, sestavljeni iz n elementov. V kombinatoriki se ta niz imenuje splošna populacija.

Število postavitev n elementov po m

Definicija 1. Namestitev od n elementi po m v kombinatoriki koli naročen komplet od m različni elementi, izbrani iz populacije v n elementi.

Primer 4. Različne razporeditve treh elementov (1, 2, 3) po dva bodo množice (1, 2), (2, 1), (1, 3), (3, 1), (2, 3), (3 , 2 ). Postavitve se lahko med seboj razlikujejo tako po elementih kot po njihovem vrstnem redu.

Število umestitev v kombinatoriki je označeno z A n m in se izračuna po formuli:

komentar: n!=1*2*3*...*n (beri: “en factorial”), poleg tega se predpostavlja, da je 0!=1.

Primer 5. Koliko je dvomestnih števil, pri katerih sta desetica in enota različni in lihi?
rešitev: Ker Če obstaja pet lihih števk, in sicer 1, 3, 5, 7, 9, se ta naloga zmanjša na izbiro in postavitev dveh od petih različnih števk na dve različni poziciji, tj. navedene številke bodo:

Definicija 2. Kombinacija od n elementi po m v kombinatoriki koli neurejen niz od m različni elementi, izbrani iz populacije v n elementi.

Primer 6. Za niz (1, 2, 3) so kombinacije (1, 2), (1, 3), (2, 3).

Število kombinacij n elementov, po m

Število kombinacij je označeno s C n m in se izračuna po formuli:

Primer 7. Na koliko načinov lahko bralec izbere dve izmed šestih razpoložljivih knjig?

rešitev:Število metod je enako številu kombinacij šestih knjig po dve, tj. je enako:

Permutacije n elementov

Definicija 3. Permutacija od n elementi se imenujejo poljubni naročen komplet teh elementov.

Primer 7a. Vse možne permutacije množice, sestavljene iz treh elementov (1, 2, 3), so: (1, 2, 3), (1, 3, 2), (2, 3, 1), (2, 1, 3) , ( 3, 2, 1), (3, 1, 2).

Število različnih permutacij n elementov označimo s P n in izračunamo po formuli P n =n!.

Primer 8. Na koliko načinov je mogoče na polici v eno vrsto razporediti sedem knjig različnih avtorjev?

rešitev: Ta problem se nanaša na število permutacij sedmih različnih knjig. Obstaja P 7 =7!=1*2*3*4*5*6*7=5040 načinov za razporeditev knjig.

Diskusija. Vidimo, da lahko število možnih kombinacij izračunamo po različnih pravilih (permutacije, kombinacije, postavitve) in rezultat bo drugačen, ker Načelo izračuna in same formule so drugačne. Če natančno pogledate definicije, boste opazili, da je rezultat odvisen od več dejavnikov hkrati.

Prvič, iz koliko elementov lahko združimo njihove množice (kako velika je celota elementov).

Drugič, rezultat je odvisen od velikosti nabora elementov, ki jih potrebujemo.

Nazadnje je pomembno vedeti, ali je vrstni red elementov v množici za nas pomemben. Razložimo zadnji dejavnik z naslednjim primerom.

Primer 9. Na roditeljskem sestanku je prisotnih 20 ljudi. Koliko različnih možnosti je za sestavo matičnega odbora, če mora vključevati 5 ljudi?
rešitev: V tem primeru nas ne zanima vrstni red imen na seznamu komisij. Če se posledično izkaže, da so del tega isti ljudje, potem je to za nas v smislu enaka možnost. Zato lahko za izračun števila uporabimo formulo kombinacije 20 elementov po 5.

Stvari bodo drugačne, če bo vsak član komisije na začetku odgovoren za določeno področje dela. Potem jih je ob enaki listni sestavi odbora v njem mogoče 5! opcije permutacije to zadevo. Število različnih (tako v sestavi kot v območju odgovornosti) možnosti je v tem primeru določeno s številom umestitve 20 elementov po 5.

Naloge za samotestiranje
1. Koliko trimestnih sodih števil lahko sestavimo iz števk 0, 1, 2, 3, 4, 5, 6, če se števke lahko ponavljajo?

2. Koliko je petmestnih števil, ki se berejo enako od leve proti desni in od desne proti levi?

3. V razredu je deset predmetov in pet ur na dan. Na koliko načinov lahko ustvarite urnik za en dan?

4. Na koliko načinov je mogoče izbrati 4 delegate za konferenco, če je v skupini 20 ljudi?

5. Na koliko načinov lahko damo osem različnih pisem v osem različnih ovojnic, če je v vsako ovojnico samo eno pismo?

6. Komisija, sestavljena iz dveh matematikov in šestih ekonomistov, naj bo sestavljena iz treh matematikov in desetih ekonomistov. Na koliko načinov je to mogoče storiti?

Oglejmo si problem štetja števila vzorcev iz danega niza v splošni obliki. Naj bo kakšen komplet n, ki jo sestavljajo n elementi. Vsaka podmnožica, ki jo sestavljajo m elemente je mogoče obravnavati brez upoštevanja njihovega vrstnega reda ali pa ga upoštevati, tj. ko spremenite vrstni red, premaknite na drugega m- vzorčenje.

Oblikujmo naslednje definicije:

Postavitve brez ponavljanja

Postavitev brez ponavljanjan elementi pom nki vsebujemrazlične elemente.

Iz definicije izhaja, da se ureditvi razlikujeta med seboj, tako po elementih kot po vrstnem redu, tudi če so elementi enaki.

Izrek 3. Število postavitev brez ponavljanja je enako zmnožku m dejavnikov, med katerimi je največje število n . Zapisati:

Permutacije brez ponavljanja

Permutacije izn elemente imenujemo različne ureditve množicen.

Iz te definicije sledi, da se obe permutaciji razlikujeta le v vrstnem redu elementov in ju lahko obravnavamo kot poseben primer umestitev.

Izrek 4. Število različnih permutacij brez ponavljanja izračunamo po formuli

Kombinacije brez ponovitev

Kombinacija brez ponavljanjan elementi pom kliče se vsaka neurejena podmnožica množicenki vsebujem različne elemente.

Iz definicije izhaja, da se obe kombinaciji razlikujeta le v elementih, vrstni red ni pomemben.

Izrek 5. Število kombinacij brez ponovitev se izračuna po eni od naslednjih formul:

Primer 1. V sobi je 5 stolov. Na koliko načinov jih lahko postavite nanje?

a) 7 oseb; b) 5 oseb; c) 3 osebe?

rešitev: a) Najprej morate izbrati 5 ljudi od 7, ki bodo sedeli na stolih. Lahko se naredi
način. Z vsako izbiro določene petice lahko izdelate
preureditve. V skladu z izrekom množenja je potrebno število metod pristanka enako.

komentar: Problem je mogoče rešiti samo z izrekom o produktu, pri čemer sklepamo takole: za sedenje na 1. stolu je 7 možnosti, na 2. stolu je 6 možnosti, na 3. -5, na 4. -4 in na 5-. th -3. Potem je število načinov, kako posaditi 7 ljudi na 5 stolov. Rešitvi obeh metod sta skladni, saj

b) Rešitev je očitna -

V) - število volitev zasedenih stolov.

- število sedežev za tri osebe na treh izbranih stolih.

Skupno število volitev je .

Ni težko preveriti formul
;

;

Število vseh podmnožic niza, sestavljenega iz n elementi.

Ponovite umestitve

S postavitvijo s ponavljanjem odn elementi pom kliče se vsaka urejena podmnožica množicen, ki jo sestavljajom elementov, tako da je v to podmnožico lahko vključen kateri koli element od 1 domkrat ali pa ga v celoti izostane.

Število umestitev s ponavljanjem je označeno z in izračunamo po formuli, ki je posledica izreka o množenju:

Primer 2. Naj bo N = (a, b, c) niz treh črk. Vsak niz črk, vključenih v ta niz, imenujemo beseda. Poiščimo število besed dolžine 2, ki jih lahko sestavimo iz teh črk:
.

komentar: Očitno pridejo v poštev tudi umestitve s ponavljanjem, ko
.

Primer 3. S črkami (a, b) morate sestaviti vse možne besede dolžine 3. Na koliko načinov je to mogoče storiti?

Odgovori:

Kombinatorni algoritmi se pogosto uporabljajo. Na internetu lahko najdete veliko informacij o kombinatoričnih algoritmih. Vendar pa internet v ruskem jeziku v glavnem proizvaja najpreprostejše probleme zveznega štetja (generiranja) kombinatornih objektov v zanki. Na primer:

Primer

// Kombinacije 3 od 52 za ​​(int i1 = 0; i1< 50; ++i1) for (int i2 = i1+1; i2 < 51; ++i2) for (int i3 = i2+1; i3 < 52; ++i3) // ...

Kombinacijski indeks

Vsako kombinacijo, permutacijo, ureditev in druge kombinatorne objekte je mogoče povezati z indeksom - to je številka, v kateri se pojavi pri ponavljanju skozi ta algoritem.

Tukaj si bomo ogledali bolj zapleten problem, katerega rešitve nisem našel v RuNetu (vendar bom dal eno povezavo, vendar je ta formula očitno napačna) - na podlagi same kombinacije (v tem primeru nabor tri številke) poiščite njen indeks.

Obstaja možnost iskanja »na glavo«. Vklopimo kombinacijski števec, vzamemo zgornji algoritem in poskusimo vse dokler ne pridemo do želene možnosti. Ta možnost je časovno zelo zahtevna, zato jo bomo zavrgli.
Predpostavimo, da vhod vsebuje števila i1, i2, i3. Najprej jih moramo urediti v naraščajočem vrstnem redu (upoštevajte, da jih sam algoritem generiranja, ki je naveden zgoraj, vedno proizvede v urejeni obliki, čeprav sam koncept "kombinacije" implicira poljuben vrstni red).

Za določnost predpostavimo, da je po vrstnem redu i1 = 3, i2 = 7, i3 = 12.
To pomeni, da smo "šli skozi" vse kombinacije, kjer je bil i1 enak 0, 1 in 2.
Za i1 = 0 smo šli skozi C(2, 51) kombinacij, saj gresta indeksa i1, i2 skozi vse kombinacije 2 od 51 števil.
Za i1 = 1 smo šli skozi C(2, 50) kombinacij.
Za i1 = 2 smo šli skozi C(2, 49) kombinacij.
Skupaj smo šli skozi SUM (od n = 0 do n = i1-1) C(2, 51-n).
Za i1 = 3 upoštevajmo tiste kombinacije, skozi katere smo šli med tekom skozi indeks i2 (in za nas se začne z i2 = i1+1 = 4).
Ko je i2 = 4, je uspelo C(1, 47) kombinacij, ko je i2 = 5, je uspelo C(1, 46) kombinacij, ko je i2 = 6, je uspelo C(1, 45) kombinacij.
Po popolni analogiji za i2 = 7 upoštevamo kombinacije, skozi katere je tekel indeks i3.
Dobimo splošno formulo:
Indeks zahtevane kombinacije = SUM (od n = 0 do i1-1) C(2, 51-n) + SUM (od n = i1+1 do i2-1) C(1, 51-n) + SUM (od n = i2+1 do i3-1) C (0, 51-n).

Indeks podnabora

V kombinatoriki je bolj zapleten predmet - razdelitev na podmnožice. Na primer, razdelitev nabora z 52 elementi na tri podmnožice, na primer 2, 3 oziroma 47 elementov, pri čemer je vrstni red elementov v vsaki podnaboru nepomemben. (Mimogrede, kombinacija 2 od 52 je preprosto poseben primer razdelitve na dve podmnožici 2 oziroma 50 elementov).

Tipičen algoritem generiranja je, da ustvarimo kombinacije 2 od 52 in za vsako tako kombinacijo v ugnezdeni zanki generiramo kombinacije 3 od 50 in preverimo, ali indeksi (i3, i4, i5) v ugnezdeni kombinaciji delujejo ne sovpadajo z indeksi (i1, i2) v zunanji kombinaciji:

koda C++

// ZUNANJA KOMBINACIJA za (int i1 = 0; i1< 51; ++i1) for (int i2 = i1+1; i2 < 52; ++i2) // ВНУТРЕННЕЕ СОЧЕТАНИЕ for (int i3 = 0; i3 < 50; ++i3) if (i3 != i1 && i3 != i2) for (int i4 = i3+1; i4 < 51; ++i4) if (i4 != i1 && i4 != i2) for (int i5 = i4+1; i5 < 52; ++i5) if (i5 != i1 && i5 != i2) // ...


Ponovno ima vsaka taka particija svoj indeks.
Izkazalo se je, da je naš algoritem za iskanje kombinacijskega indeksa mogoče spremeniti za iskanje particijskega indeksa.
Opozoriti je treba, da moramo indekse v »zunanji kombinaciji« i1, i2 razporediti med seboj, indekse i3, i4, i5 pa med seboj, vendar neodvisno od prvih dveh.
Upoštevati je treba tudi, da v "gnezdeni kombinaciji" v bistvu delamo s 50-elementnim naborom, vendar je treba indekse i3, i4, i5 na določen način "premakniti", tako da se ne spremenijo od 0 do 51, vendar od 0 do 49:

koda C++

če (i3 >= i1) --i3; če (i3 >= i2) --i2; // podobno za i4, i5


(tako rekoč iz našega nabora 52 elementov izrežemo indekse i1, i2 in nato premaknemo preostali niz, da zapremo luknje, medtem ko se indeksi i3-i5 premaknejo).
Upoštevati je treba, da imamo znotraj vsake “zunanje” kombinacije točno C(3, 50) “ugnezdenih” kombinacij.
Potem se bo algoritem zmanjšal na naslednje:
COMBINATION_INDEX (i1, i2 od 52) * COMBINATION_NUMBER BY_3_OF_50 + COMBINATION_INDEX (i3, i4, i5 od 50 po premiku indeksa).

Priprava algoritmov na konstantno kompleksnost

Takoj naj opozorim, da pride do »napake« v formuli, če je npr. i1 = 0 (vsoto štejemo za n = od 0 do -1) ali i2 = 1 (vsoto štejemo od 1 do 0). Pravzaprav je treba v takih primerih ustrezno vsoto vzeti enako nič in rezultat bo pravilen.
Pozoren bi moral biti tudi na časovno kompleksnost naših algoritmov: imajo linearno kompleksnost, pod pogojem, da C smatrate za konstanten čas. To je že veliko bolje kot surova sila.
Ampak dejansko (v našem primeru 52) nam nič ne preprečuje reduciranja algoritma na konstantno kompleksnost. Za to bomo uporabili znanje matematike in analitično izračunali vse zneske.
Na primer, število kombinacij C(2, K), če ga "razširite" v obliki formule K! / ((K-2)! * 2!), reducira na polinom 2. stopnje. In ker ga imamo pod znakom za vsoto, lahko uporabimo formule za vsoto N-tih potenc števil v naravni vrsti (glej Wikipedijo) in dobimo en polinom 3. stopnje. Kar ima očitno stalno časovno kompleksnost. (Poleg tega se »napaka«, ki sem jo navedel na začetku podnaslova, nikakor ne pokaže; formula ostaja pravilna).
Ponavljam, to za fiksno dimenzijo osnovnega sklopa. Prepričan pa sem, da lahko s pomočjo metaprogramiranja »naučite« prevajalnik, da to delo opravi namesto vas.

Primer kode za razdeljen indeks na 2, 3, 47

int get_split_2_3_47_index(int ​​​​i1, int i2, int i3, int i4, int i5) ( // Indeks kombinacije 2 od 52, pomnoženo s C(3, 50) int offset = ((52*51 - (51-i1) *(52-i1)) / 2 + (i2 - i1 - 1)) * 19600; // “Ponovno indeksiraj” notranjo skupino, tako da je oštevilčenje 0...49, če (i3 > = i1) --i3; če (i3 >= i2) --i3; če (i4 >= i1) --i4; če (i4 >= i2) --i4; če (i5 >= i1) --i5 ; if (i5 >= i2) --i5; // Zdaj dodajte indeks kombinacije s 3 // 0: // SUM za n = 0 z i3-1 KOMBINACIJE (2, 49-n) // = SUM za m = 50-i3 za 49 (m * (m-1) / 2) odmik += (19600 - (((49-i3)*(50-i3)*(99-2*i3)) / 6 - ((49-i3)*(50-i3 )) / 2) / 2); // 1: // SUM za n = i3+1 do i4-1 KOMBINACIJE (1, 49-n) odmik += (( (48-i3)*(49-i3) - (49-i4)*(50-i4)) / 2); // 2: // SUM za n = i4+1 do i5-1 (1) odmik + = (i5 - i4 - 1); povratni odmik ; )

Pogovor

V svojem simulatorju pokra (Texas Hold'em) sem želel vnaprej izračunati in shraniti zmagovalne verjetnosti za vse možne kombinacije mojih ročnih kart (2 kosa) in vseh flop kart (3 karte na mizi). To ustreza delitvi niz 52 z 2, 3, 47 podmnožicami.
Izračunano in shranjeno.
Ko pa je prišel čas za branje podatkov iz datoteke za določeno kombinacijo, res nisem želel nekaj dolgo računati ali iskati v gigabajtni datoteki. Zdaj samo določim odmik v datoteki in neposredno preberem, kar potrebujem.

Na splošno bi kombinatorne algoritme razdelil v naslednje razrede:

  • Generiranje kombinatornih objektov v enem ciklu (tukaj je vse preprosto, dal sem primere);
  • Premik na naslednji (ali prejšnji) kombinatorni objekt, poznavanje prejšnjega (nekakšen iterator naprej/nazaj, izražen s C++ izrazi) – tukaj si lahko ogledate učbenik T. I. Fedoryaeva, ki zagotavlja algoritem s konstantno časovno kompleksnostjo za permutacije, in druge primere je mogoče najti v RuNetu, vendar samo za permutacije - vendar bi bilo zanimivo videti podobne algoritme za druge kombinatorne objekte;
  • Iskanje indeksa predmeta. Sploh ni primerov, z izjemo priročnika Fedoryaeve, poleg tega linearne kompleksnosti in samo za permutacijo;
  • Iskanje predmeta po indeksu.
Zanimivo bi bilo imeti priročnik o kombinatoričnih algoritmih za vse kombinatorne objekte, vključno s permutacijami, kombinacijami, postavitvami, podmnožicami, kombinacijami s ponovitvami, postavitvami s ponovitvami.

Bližala se je zima in Khoma in Suslik sta se odločila narediti zalogo graha. Ves dan so tekli v hlev in nosili več strokov: Khoma, štiri, in Suslik, dva. Do večera so prešteli vse stroke, ki so jih pobrali, in tuhtali, kako naj zdaj razdelijo ta grah. Khoma je trdil, da bi moral dobiti dvakrat toliko graha, če bi naenkrat vlekel dvakrat toliko kot Suslik. Suslik je temu upravičeno ugovarjal, da je, prvič, Khomina hitrost opazno nižja od Suslikove, in, drugič, kdo ve, morda je Khoma pobegnil le enkrat ali dvakrat, preostali čas pa je bil v prostem teku ...

Pomagajte svojim prijateljem vsaj malo razumeti to težko situacijo. Določite vse možne možnosti, koliko strokov je prinesel Suslik in koliko Khoma.

Vhodni podatki

V prvi vrstici je naravno sodo število M – število ukradenih strokov, 2 ≤ M ≤ 1000.

Izhod

Vse možne kombinacije količin strokov, ki sta jih prinesla Suslik in Khoma, ena kombinacija na linijo. Vsaka kombinacija predstavlja dve nenegativni celi števili, ločeni s presledkom: prvo število je število strokov, ki jih je prinesel Suslik, drugo pa Khoma. Razvrstite kombinacije po padajočem vrstnem redu glede na prvo številko.

Testi

Vhodni podatki Izhod
6 \\ 6 \; 0 \\ 2 \; 4
11 \\ 11\;0 \\ 7\;4 \\ 3\;8
18 \\ 18\;0 \\ 14\;4 \\ 10\;8 \\ 6\;12 \\ 2\;16

Programska koda

#vključi

uporaba imenskega prostora std;

int main()(

int a, b = 0;

cin >> a ;

medtem ko (a >= 0 ) (

cout<< a << " " << b << "\n" ;

a -= 4; b += 4;

vrni 0;

Rešitev problema

Naj bo a število strokov, ki jih je prinesel Homa, b pa število strokov, ki jih je prinesel Suslik. Ker je glede na pogoje problema Khoma nosil le štiri stroke, bomo upoštevali a = a-4 in b = b + 4, da bi tako našteli vse možne kombinacije števila strokov, ki sta jih prinesla Suslik in Khoma. Uporabimo tudi zanko medtem, ki bo ponavljal zgoraj opisano dejanje do \geq 0. V odgovoru natisnemo vse možne kombinacije števila podov, ki so jih prinesli prijatelji, enega na vrstico, urejene v padajočem vrstnem redu glede na prvo številko.

Podobni članki

2024 videointercoms.ru. Mojster vseh obrti - gospodinjski aparati. Razsvetljava. Obdelava kovin. Noži. Elektrika.