|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.12.2022, 14:15 | #1 |
Новичок
Джуниор
Регистрация: 26.12.2022
Сообщений: 1
|
paskal
//9) В городском зоопарке содержатся животные N (1 ≤ N ≤ 1000) разных видов.
//Для участия в международной выставке зоопарк должен представить трех животных //различных видов. Требуется написать программу, которая вычислит число способов //выбрать трех животных для участия в выставке. //Например, если в зоопарке два медведя, тигр, лев и пингвин, то есть семь способов выбрать трех животных: //1. первый медведь, тигр и лев; //2. первый медведь, тигр и пингвин; //3. первый медведь, лев и пингвин; //4. второй медведь, тигр и лев; //5. второй медведь, тигр и пингвин; //6. второй медведь, лев и пингвин; //7. тигр, лев и пингвин. переделать используя функцию перебор const n = 4; var i,j,k,m,l,p: integer; s: real; a: array[1..n] of integer; begin s:= 0; a[1]:=2; //можно задать любое количество животных a[2]:=1; a[3]:=1; a[4]:=1; writeln(a[1],' ',a[2],' ',a[3], ' ' ,a[4]); for i:=1 to (n-2) do begin for j:=(i+1) to (n) do begin for k:=(j+1) to (n) do begin s+=1; writeln(i,' ',j,' ',k); m:=1;l:=1;p:=1; while m<a[i] do begin writeln(i,'(',m,') ',j,' ',k); s+=1; m+=1; end; while l<a[j] do begin writeln(i,' ',j,'(',l,') ',k); s+=1; l+=1; end; while p<a[k] do begin writeln(i,' ',j,' ',k,'(',p,')'); s+=1; p+=1; end; end; end; end; writeln('Ответ: ', s, ' способов'); end. |
27.12.2022, 01:36 | #2 | |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,339
|
Предложенный пример вводит в заблуждение.
Из условия задачи следует, что у зоопарка нет двух медведей. Цитата:
C = n!/(m! * (n - m)!) Но тут лежит мина... Как на Паскале посчитать N!, если N = 1000. Хз...
Как-то так, ...
|
|
27.12.2022, 02:27 | #3 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,504
|
Либо по формуле https://ru.wikipedia.org/wiki/%D0%A4...BD%D0%B3%D0%B0
Результат влезет в Extended ( в него до 1750! влазит ). Или С(n;m) считать через Ln и Exp , там сокращения будут. И вобще при m=3 саму формулу можно сократить C(n;3)= n*(n-1)*(n-2)/6 |
27.12.2022, 09:14 | #4 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,533
|
Цитата:
формула не учитывает что одного вида (медведей например) особей БОЛЬШЕ чем одна и что наборы различающиеся выбором первого или второго медведя есть РАЗНЫЕ. выборки 1 и 4 из первого поста. можно было бы домножить на число особей одного вида (первый, второй и т.д. медведь), но вот беда число особей для каждого вида свое!
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 27.12.2022 в 09:20. |
|
27.12.2022, 11:56 | #5 | ||
Старожил
Регистрация: 23.10.2010
Сообщений: 2,339
|
type_Oleg
Цитата:
evg_m Цитата:
2. Число одинаковых особей, например, 2-а медведя, в условии никак не просматривается. Это воображение ТС. Иначе, кроме N, задавались бы и другие значения, например, 8 гусей, 3 зайца, ...
Как-то так, ...
|
||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
(Paskal) | Kastiel11 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 02.06.2013 21:57 |
Paskal | qscwdv | Помощь студентам | 0 | 08.02.2012 11:05 |
paskal abc,turbo paskal | andrei57 | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 08.09.2011 05:33 |
Free Paskal и Turbo Paskal | Polly~Sunbeam | Паскаль, Turbo Pascal, PascalABC.NET | 7 | 18.04.2011 16:00 |
Paskal | netcher | Помощь студентам | 3 | 05.02.2009 02:04 |