#include <iostream>
using namespace std;
int a, b, numb;
bool init;
int main()
{
do {
cout << "Input a b: ";
cin >> a >> b;
if ((a > b) || (a <= 0) || (b <= 0))
cout << "Input error! Try again" << endl;
} while ((a > b) || (a <= 0) || (b <= 0));
for (int i = a; i <= b; i++) {
init = true;
numb = i;
do {
if (numb % 10 == 0)
init = false;
else if ((i / (numb % 10) * (numb % 10)) != i)
init = false;
numb /= 10;
} while (numb != 0);
if (init == true)
cout << i << " ";
}
return 0;
}
m = 6;
n = 4;
var
a: array[1..m, 1..n] of integer;
b: array[1..m] of integer;
i, j, p, pmax, imax: integer;
flag: boolean;
begin
{1}
Randomize;
writeln('Исходный массив');
for i := 1 to m do
begin
for j := 1 to n do
begin
a[i, j] := Random(81) - 40;
write(a[i, j]:4)
end;
writeln
end;
{2}
writeln('Произведения построчно');
for i := 1 to m do
begin
p := 1;
for j := 1 to n do p := p * a[i, j];
writeln(i, ': ', p:9)
end;
{3}
pmax := -MaxInt;
writeln('Максимальное построчное произведение');
for i := 1 to m do
begin
p := 1;
for j := 1 to n do p := p * a[i, j];
if pmax < p then
begin
pmax := p;
imax := i;
end
end;
writeln(imax, ': ', pmax:9);
{4}
for i := 1 to m do b[i] := a[i, 1];
for i := 2 to m do
begin
p := b[i];
j := i - 1;
flag := False;
while (j > 0) and (not flag) do
if p < b[j] then
begin
b[j + 1] := b[j];
j := j - 1
end
else flag := True;
b[j + 1] := p
end;
writeln('Отсортированный первый столбец');
for i := 1 to m do writeln(b[i]:3)
end.
Тестовое решение:
Исходный массив
-27 4 3 14
15 40 -39 -27
40 -40 -40 -24
-38 7 18 1
17 27 29 -9
10 -32 38 0
Произведения построчно
1: -4536
2: 631800
3: -1536000
4: -4788
5: -119799
6: 0
Максимальное построчное произведение
2: 631800
Отсортированный первый столбец
-38
-27
10
15
17
40