Дано трехзначное число, определите сколько из него можно составить различных чисел (дублировать цифры нельзя, исходное число также считается при подсчете, двузначные и просто цифры тоже подсчитываются )
Program A1; var a:array[1..30] of integer; amax,amin,i,imin,imax,n,s:integer; begin writeln('введите n элементов массива'); readln(n); for i:=1 to n do a[i]:=random(30); writeln('введённый массив имеет вид'); for i:=1 to n do write(a[i], ' '); writeln; amax:=a[1]; imiax:=1; for i:=2 to n do if a[i]>amax then begin amax:=a[i]; imax:=i; end; amin:=a[1]; imin:=1; for i:=2 to n do if a[i]<amin then begin amin:=a[i]; imin:=i; end; writeln('полученный массив имеет вид'); s:=a[imin];
a[imin]:=a[imax];
a[imax]:=s; for i:=1 to n do writeln(a[i],' '); end.
Пусть в "долях" a < = b < = c вершин, и проведены все рёбра между разными "долями". так как из каждой вершины, лежащей в первой "доле", можно провести только b + c рёбер, из второй доли — a + c рёбер, из третьей — a + b рёбер, то общее количество рёбер равно (a * (b + c) + b * (a + c) + c * (a + b))/2 = ab + ac + bc (деление на 2 возникает из-за того, что каждое ребро подсчитывается дважды). нужны такие a, b, c, при которых значение выражения ab + bc + ac будет максимально. максимальное значение можно найти перебором. python 3: max_value = 0 for a in range(40//3 + 1): for b in range(a, (40 - a)//2 + 1): c = 40 - a - b value = a * b + a * c + b * c max_value = max(max_value, value) print(max_value) ответ. 533
Program A1;
var a:array[1..30] of integer;
amax,amin,i,imin,imax,n,s:integer;
begin
writeln('введите n элементов массива');
readln(n);
for i:=1 to n do a[i]:=random(30);
writeln('введённый массив имеет вид');
for i:=1 to n do write(a[i], ' ');
writeln;
amax:=a[1]; imiax:=1;
for i:=2 to n do
if a[i]>amax then begin amax:=a[i]; imax:=i; end;
amin:=a[1]; imin:=1;
for i:=2 to n do
if a[i]<amin then begin amin:=a[i]; imin:=i; end;
writeln('полученный массив имеет вид');
s:=a[imin];
a[imin]:=a[imax];
a[imax]:=s;
for i:=1 to n do
writeln(a[i],' ');
end.