"...напечатает сначала 2, потом - 6" -- это значит a=2 и b=6?
про пятеричные записи ничего не понял... :) И ИМХО к чему такие сложности? И для чего нам комп и программа? Я подправил исходную прогу чтобы она выдавала все числа подходящие по условию
var x,a,b: longint;
begin
for var i := 999 DownTo 100 do begin
a := 0;
b := 1;
x := i;
while x>0 do begin
if x mod 2 > 0 then a := a+1 else b := b+(x mod 5);
x := x div 5;
end;
if (a = 2) and (b = 6) then writeln('x = ', i, ' a = ', a, ' b = ',b);
end;
end.
прога проводит расчет для всх трехзначных чисел от 999 до 100
итого мы видим что максимальное подходящее число это 960
при необходимости прогу можно переделать чтобы она находила только максимальное число.
nm = 50;
nn = 50;
type
Mas=array[1..nm,1..nn] of integer;
procedure MatrixInit(var a:Mas;m,n,p,q:integer);
{ Заполнение массива размером m*n
целыми случайными числами из интервала [p;q] }
var
i,j,k:integer;
begin
k:=q-p+1;
for i:=1 to m do
for j:=1 to n do a[i,j]:=Random(k)-p
end;
procedure MatrixOutput(var a:Mas;m,n,k:integer);
{ вывод элементов матрицы размера m*n в k позициях }
var
i,j:integer;
begin
for i:=1 to m do
begin for j:=1 to n do Write(a[i,j]:k); Writeln end
end;
function IsFits(var a:Mas;m,col:integer):boolean;
{ функция возвращает true, если колонка col явдяется "подходящей" }
var
i,max:integer;
mv:real;
begin
max:=a[1,col]; mv:=max;
for i:=2 to m do
begin
mv:=mv+a[i,col];
if max<a[i,col] then max:=a[i,col]
end;
mv:=mv/m;
IsFits:=(max-mv>a[1,col])
end;
procedure ColumnReplace(var a:Mas;m,col:integer);
{ Замена элементов столбца col единицами }
var
i:integer;
begin
for i:=1 to m do a[i,col]:=1
end;
var
P: Mas;
a,b,m,n,j,k:integer;
flag:boolean;
begin
Randomize;
Write('Введите количество строк и столбцов матрицы: ');
Read(m,n);
Write('Укажите минимальное и максимальной значение элементов: ');
Read(a,b);
Write('Укажите количество позиций для вывода значения элемента: ');
Read(k);
MatrixInit(P,m,n,a,b);
Writeln('Исходный массив');
MatrixOutput(P,m,n,k);
j:=1;
repeat
flag:=IsFits(P,m,j);
if flag then
begin
ColumnReplace(P,m,j);
Writeln('Результирующий массив');
MatrixOutput(P,m,n,k)
end
else Inc(j)
until flag or (j>n);
if not flag then
Writeln('')
end.
Тестовое решение:
Введите количество строк и столбцов матрицы: 5 8
Укажите минимальное и максимальной значение элементов: 0 20
Укажите количество позиций для вывода значения элемента: 3
Исходный массив
19 7 2 15 2 11 2 15
12 16 8 14 6 8 1 17
12 14 10 8 7 19 7 1
0 9 0 7 18 10 2 5
18 8 4 9 16 10 14 10
Результирующий массив
19 7 1 15 2 11 2 15
12 16 1 14 6 8 1 17
12 14 1 8 7 19 7 1
0 9 1 7 18 10 2 5
18 8 1 9 16 10 14 10