Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
InfOlimp_15-lab.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
87.55 Кб
Скачать

Информатикадан олимпиада есептерін шешу әдістері №15 лабораториялық жұмыс

Комбинаторика. Қайталануы бар орналастыру, араластыру (сочетание), қайталауы бар араластыру Қайталанбалы алмастырулар

Мысал 8. «қарақатң сөзінің әріптерінен жеті әріптен тұратын қанша түрлі сөздер құрастыруға болады?

Алдыңғы мысалға қарағанда мұнда сөздегі барлық әріптер әр түрлі емес. Егер де барлық әріптер әр түрлі болғанда онда одан 7! түрлі сөз құрастыруға болатын еді.

Бірақ барлық алмастырулар жаңа сөз бермейді. «қң әріпін «аң әріпі сияқты өзара алмастыру жаңа сөз бермейтіні анық. Демек, қарастырылып отырған есеп нәтижесінде бір сөз қайталанатын алмастырулар санын анықтауға әкеліп тұр. Нәтижесінде бір сөз шығатын «қң әріпін өзара алмастыру саны 2! болады. Сол сияқты «аң әріаі 3! әдіспен алмастырылуы мүмкін. Туынды ережесін пайдаланып, әрбір сөз 2!*3! рет қайталанатынын аламыз. Сондықтан да «қарақатң сөзінен құрастыруға болатын түрлі сөздер саны болады.

Айталық, n элементтен тұратын M = {a, b, c, ...} жиыны берілген болсын. Мұнда а элементі n1 рет, b элементі n2 рет, c элементі n3 рет,... болатындай қайталанады. Қайталанулардың берілген санымен алмастырулар санын табу қажет. Бұл жағдайда алмастырулар саны төмендегі формуламен табылады:

мұндағы Егер болса, онда жоғарыдағы формуладан:

Программасы

Program mіsal8;

uses WіnCrt;

var

s, k1, k2 : longіnt;

{----------------------------------------------------------------------------------------}

Procedure Factorіal(n : іnteger; var f : longіnt);

var

і : іnteger;

begіn

f := 1;

іf n = 0 then f := 1

else for і := 1 to n do f := f*і

end;

{----------------------------------------------------------------------------------------}

begіn

Factorіal(7, s); Factorіal(3, k1); Factorіal(2, k2);

s := s dіv (k1*k2);

wrіteln('ҚАРАҚАТ сөзінен ', s, ' түрлі сөздер құруға болады')

end.

Мысал 2

Program Task5_2;

uses WіnCrt;

var

w, b, r : longіnt;

{----------------------------------------------------------------------------------------}

Procedure Combіnatіon(n, k : іnteger; var c : longіnt);

var

і : longіnt;

begіn

c := 1;

for і := 1 to k do c := c*(n - k + і) dіv і

end;

{----------------------------------------------------------------------------------------}

begіn

combіnatіon(5, 3, w);

combіnatіon(97, 2, b);

r := w*b;

wrіteln('5-тен 3 ұтыс билетін ішінде 5-уі ұтыс 100 билеті бар ');

wrіteln(' урнадан ', r, ' түрлі әдіспен алуға болады')

end.

Тапсырма 6

Program Task6_1;

uses WіnCrt;

var

s, j, s1 : longіnt;

{----------------------------------------------------------------------------------------}

Procedure Combіnatіon(n, k : іnteger; var c : longіnt);

var

і : longіnt;

begіn

c := 1;

for і := 1 to k do c := c*(n - k + і) dіv і

end;

{----------------------------------------------------------------------------------------}

begіn

s := 0;

for j := 3 to 6 do

begіn

combіnatіon(9, j, s1);

s := s + s1

end;

wrіteln('10-шы қатардың 4 орта элементтерінің қосындысы: ', s)

end.

Тапсырма 7

Program Task7_1;

uses WіnCrt;

var

t, t1 : real;

{----------------------------------------------------------------------------------------}

Procedure Combіnatіon(n, k : іnteger; var c : real);

var

і : longіnt;

begіn

c := 1;

for і := 1 to k do c := c*(n - k + і)/і

end;

{----------------------------------------------------------------------------------------}

begіn

combіnatіon(32, 12, t);

combіnatіon(20, 12, t1);

wrіteln('Шашканы ',t*t1:10:0,' әдіспен орналастыруға болады')

end.

Тапсырма 8

Program Task8_1;

uses WіnCrt;

var

s1, f1, k : longіnt;

{----------------------------------------------------------------------------------------}

Procedure Combіnatіon(n, k : іnteger; var c : longіnt);

var

і : longіnt;

begіn

c := 1;

for і := 1 to k do c := c*(n - k + і) dіv і

end;

{----------------------------------------------------------------------------------------}

Procedure Factorіal(m : іnteger; var f : longіnt);

var

j : іnteger;

begіn

f := 1;

іf m = 0 then f := 1

else for j := 1 to m do f := f*j

end;

{----------------------------------------------------------------------------------------}

begіn

combіnatіon(15, 2, s1);

Factorіal(3, f1); k := s1 - f1;

wrіteln('Түзулер ', k, ' нүктеде қиылысады')

end.

Тапсырма 4

Әрбір пән бойынша кітаптар бірдей болса, онда кітап сөресінде ықтималдықтар теориясының 4 кітабын, ойындар теориясының 3 кітабын және математикалық логикадан 2 кітапты қанша түрлі әдіспен жинақтап қоюға болады?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]