// PascalABC.NET 3.1, сборка 1179 от 29.02.2016 const n=15; var a:array[1..n] of integer; i,k,t:integer; begin Randomize; k:=0; for i:=1 to n do begin a[i]:=Random(90)+10; if k=0 then if a[i] mod 7 = 0 then k:=i; Write(a[i],' ') end; Writeln; if k>0 then begin if Odd(n) then i:=n div 2+1 else i:=n div 2; t:=a[k]; a[k]:=a[i]; a[i]:=t; for i:=1 to n do Write(a[i],' '); Writeln end else Writeln('Нет элементов, кратных 7') end.
def factorial(n) f = 1; for i in 1..n; f *= i; end; f end
n=0
for i in 0..80/3 for j in 0..80/4 for k in 0..80/5 if 22+3*i+4*j+5*k==80 nn = factorial(i+j+k)/factorial(i)/factorial(j)/factorial(k) n+=nn p [i,j,k]
end end end end p n
Как работает программа: Сначала мы находим получить из 22 число 80. Для удобства шаги мы упорядочеваем: сначала прибавляем тройки, потом четверки, потом пятерки. Ищем все возможные наборы (i, j, k) которые отвечают равенству 22 + 3i + 4j + 5k = 80. Для каждого такого набора высчитываем кол-во перестановок с повторениями и суммируем их. ответ 3174448
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку