Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ комбинаторикоПодобная задачка

Автор: кучаТрупов 14.12.2008 19:14

Изображение
Изображение

нужно хотя бы идею способа реализации в паскале.или хотя бы просто идею)спасибо за внимание)

Автор: xds 14.12.2008 21:23

Можно переформулировать в других терминах: найти все семизначные числа в пятеричной системе счисления, в которых общее количество цифр 0 и 1 равно трем, а цифра 2 встречается не менее двух раз. Почему так - понятно?

Дальше просто решаешь перебором тождественную задачу. Если не программировать, то можно посчитать аналитически.

Автор: кучаТрупов 14.12.2008 21:57

все решила по формулам. рассматривая возможности:
1) n1+n2=3 n3=2 -> n4+n5=2-> появляются возможности:

n1=3 n2=0 n3=2 n4=2 n5=0
n1=3 n2=0 n3=2 n4=1 n5=1
n1=3 n2=0 n3=2 n4=0 n5=2

n1=0 n2=3 n3=2 n4=2 n5=0
n1=0 n2=3 n3=2 n4=1 n5=1
n1=0 n2=3 n3=2 n4=0 n5=2

n1=1 n2=2 n3=2 n4=2 n5=0
n1=1 n2=2 n3=2 n4=1 n5=1
n1=1 n2=2 n3=2 n4=0 n5=2

n1=2 n2=1 n3=2 n4=2 n5=0
n1=2 n2=1 n3=2 n4=1 n5=1
n1=2 n2=1 n3=2 n4=0 n5=2

2) n1+n2=3 n3=3 -> n4+n5=1-> появляются возможности:

n1=3 n2=0 n3=3 n4=1 n5=0
n1=3 n2=0 n3=3 n4=0 n5=1
n1=0 n2=3 n3=3 n4=0 n5=1
n1=0 n2=3 n3=3 n4=1 n5=0


n1=1 n2=2 n3=3 n4=1 n5=0
n1=1 n2=2 n3=3 n4=0 n5=1
n1=2 n2=1 n3=3 n4=0 n5=1
n1=2 n2=1 n3=3 n4=1 n5=0

3)n1=3 n2=0 n3=4 n4=0 n5=0
n1=0 n2=3 n3=4 n4=0 n5=0
n1=2 n2=1 n3=4 n4=0 n5=0
n1=1 n2=2 n3=4 n4=0 n5=0

теперь по формулам вида Р(к1,к2,к3,к4,к5)=n!/(k1!*...*k5!)
в итоге получается =9240

на паскаль сил нет)








Автор: xds 14.12.2008 23:19

Аналитическое решение гораздо круче smile.gif

А Паскаль согласен с ответом:

program Code;

const
n = 7;
q = 5;

var
a: array[0..n] of Integer;
i, n12, n3, nr: Integer;
Done: Boolean;

begin
for i := 0 to n do
a[i] := 0;

nr := 0;

repeat
n12 := 0;
n3 := 0;
for i := 0 to n - 1 do
case a[i] of
0, 1:
Inc(n12);
2:
Inc(n3);
end;
if (n12 = 3) and (n3 >= 2) then Inc(nr);

Inc(a[0]);
Done := True;
for i := 0 to n - 1 do
begin
if a[i] >= q then
begin
Dec(a[i], q);
Inc(a[i + 1]);
end;
if a[i] <> 0 then Done := False;
end;
until Done;

Writeln(nr);
end.

Автор: кучаТрупов 14.12.2008 23:29

аааа..спасибо большое))здорово)) give_rose.gif

Автор: xds 14.12.2008 23:44

Цитата(кучаТрупов @ 15.12.2008 2:29) *

аааа..спасибо большое))здорово)) give_rose.gif
На здоровье! smile.gif