// PascalABC.NET 3.3, сборка 1600 от 23.12.2017 // Внимание! Если программа не работает, обновите версию!
begin var a:=SeqRandom(ReadInteger('n='),-99,99).Select(t->t/10).ToArray; a.Println; Writeln('1: ',a.Where(t->t<0).Sum); a.Sort; // по возрастанию a.Println; Writeln('2: ',a[a.IndexMin+1:a.IndexMax].Aggregate(1.0,(x,y)->x*y)) end.
// PascalABC.NET 3.3, сборка 1600 от 23.12.2017 // Внимание! Если программа не работает, обновите версию!
begin var (m,n):=ReadInteger2('Количество строк и столбцов в матрице:'); Writeln('*** Исходная матрица ***'); var a:=MatrRandom(m,n,-20,20); a.Println(4); Writeln(4*a.ColCount*'-'); Writeln('1: ',a.Rows.Where(r->r.All(t->t<>0)).Count); Writeln('2: ',a.ElementsByRow.GroupBy(t->t).Select(t->(t.Key,t.Count)) .Where(t->t[1]>1).MaxBy(t->t[0])[0]) end.
Если время выполнения не важно, то полный перебор. Любое число можно представить в виде суммы не более 9 кубов.
var i,j,k,n,m,p,r,s,u,v,nm,nmb: integer; a: array[0..400] of integer; b: array[1..9,1..3] of integer; begin write('число: '); readln(nm); r:=floor(power(nm,1/3))+1; a[0]:=0; // заполнение массива for i:=1 to r do a[i]:=i*i*i; // заполнение массива циклов // изначально 1 цикл b[1,1]:=1; b[1,2]:=0; b[1,3]:=r; nmb:=1; for i:=2 to 9 do begin b[i,1]:=0; b[i,2]:=0; b[ i,3]:=0; end; // полный перебор repeat for i:=b[1,1] to b[1,3] do for j:=b[2,1] to b[2,3] do for k:=b[3,1] to b[3,3] do for n:=b[4,1] to b[4,3] do for m:=b[5,1] to b[5,3] do for p:=b[6,1] to b[6,3] do for s:=b[7,1] to b[7,3] do for u:=b[8,1] to b[8,3] do for v:=b[9,1] to b[9,3] do if a[i]+a[j]+a[k]+a[n]+a[m]+a[p]+a[s]+a[u]+a[v]=nm then begin b[1,2]:=i; b[2,2]:=j; b[3,2]:=k; b[4,2]:=n; b[5,2]:=m; b[6,2]:=p; b[7,2]:=s; b[8,2]:=u; b[9,2]:=v; for nm:=1 to nmb do write(b[nm,2],' '); writeln; exit; end; inc(nmb); b[nmb,1]:=1; b[nmb,3]:=r; until false; end.
// Внимание! Если программа не работает, обновите версию!
begin
var a:=SeqRandom(ReadInteger('n='),-99,99).Select(t->t/10).ToArray;
a.Println;
Writeln('1: ',a.Where(t->t<0).Sum);
a.Sort; // по возрастанию
a.Println;
Writeln('2: ',a[a.IndexMin+1:a.IndexMax].Aggregate(1.0,(x,y)->x*y))
end.
Пример
n= 13
-3 6 -2.3 -7.5 -1.6 8.4 -4.7 -2.8 9.9 -3.3 -0.7 0.9 -8.8
1: -34.7
-8.8 -7.5 -4.7 -3.3 -3 -2.8 -2.3 -1.6 -0.7 0.9 6 8.4 9.9
2: 114175.0608768
// PascalABC.NET 3.3, сборка 1600 от 23.12.2017
// Внимание! Если программа не работает, обновите версию!
begin
var (m,n):=ReadInteger2('Количество строк и столбцов в матрице:');
Writeln('*** Исходная матрица ***');
var a:=MatrRandom(m,n,-20,20);
a.Println(4); Writeln(4*a.ColCount*'-');
Writeln('1: ',a.Rows.Where(r->r.All(t->t<>0)).Count);
Writeln('2: ',a.ElementsByRow.GroupBy(t->t).Select(t->(t.Key,t.Count))
.Where(t->t[1]>1).MaxBy(t->t[0])[0])
end.
Пример
Количество строк и столбцов в матрице: 7 20
*** Исходная матрица ***
-9 9 16 -5 18 -1 -12 -13 -19 -12 8 -19 -18 20 -16 9 -7 17 -19 1
8 2 18 -7 -16 3 15 19 -11 -10 -9 -4 16 -4 18 10 15 10 -17 6
-19 -15 -14 15 11 -13 3 0 1 -6 -17 -17 -14 -4 -2 10 11 3 -9 -6
5 -11 18 11 18 -8 -14 6 -18 -5 15 4 13 -5 -1 3 -4 -18 2 18
-20 -5 -2 16 -13 -13 -11 -1 19 -12 19 -9 -1 10 -19 13 -13 -5 18 -1
-19 18 -2 -14 -1 0 -10 12 17 16 -7 9 -20 -7 -6 -10 12 -18 4 10
-18 7 7 15 -4 3 -15 -17 -7 7 -5 -20 -16 -17 17 -17 18 -8 -3 7
--------------------------------------------------------------------------------
1: 5
2: 19
var i,j,k,n,m,p,r,s,u,v,nm,nmb: integer;
a: array[0..400] of integer;
b: array[1..9,1..3] of integer;
begin
write('число: '); readln(nm);
r:=floor(power(nm,1/3))+1;
a[0]:=0;
// заполнение массива
for i:=1 to r do a[i]:=i*i*i;
// заполнение массива циклов
// изначально 1 цикл
b[1,1]:=1; b[1,2]:=0; b[1,3]:=r;
nmb:=1;
for i:=2 to 9 do
begin
b[i,1]:=0; b[i,2]:=0; b[ i,3]:=0;
end;
// полный перебор
repeat
for i:=b[1,1] to b[1,3] do
for j:=b[2,1] to b[2,3] do
for k:=b[3,1] to b[3,3] do
for n:=b[4,1] to b[4,3] do
for m:=b[5,1] to b[5,3] do
for p:=b[6,1] to b[6,3] do
for s:=b[7,1] to b[7,3] do
for u:=b[8,1] to b[8,3] do
for v:=b[9,1] to b[9,3] do
if a[i]+a[j]+a[k]+a[n]+a[m]+a[p]+a[s]+a[u]+a[v]=nm then
begin
b[1,2]:=i; b[2,2]:=j; b[3,2]:=k; b[4,2]:=n; b[5,2]:=m;
b[6,2]:=p; b[7,2]:=s; b[8,2]:=u; b[9,2]:=v;
for nm:=1 to nmb do write(b[nm,2],' ');
writeln;
exit;
end;
inc(nmb);
b[nmb,1]:=1;
b[nmb,3]:=r;
until false;
end.
число: 2020
1 1 1 7 7 11
2020 = 1^3 + 1^3 + 1^3 + 7^3 + 7^3 + 11^3