// PascalABC.NET 3.1, сборка 1219 от 16.04.2016 type Matrix=array[,] of integer;
procedure MatPrint(a:Matrix; w:integer); begin for var i:=0 to Length(a,0)-1 do begin for var j:=0 to Length(a,1)-1 do Write(a[i,j]:w); Writeln end end;
procedure MatProd(a,b,c:Matrix); begin for var i:=0 to Length(a,0)-1 do for var j:=0 to Length(b,1)-1 do begin var s:=0; for var k:=0 to Length(a,1)-1 do s+=a[i,k]*b[k,j]; c[i,j]:=s end end;
begin var a,b,c:Matrix; var m,n,p:integer; Write('Число строк матрицы А: '); Read(n); Write('Число столбцов матрицы А и строк матрицы В: '); Read(m); Write('Число столбцов матрицы В: '); Read(p); a:=MatrixRandom(n,m,-50,50); Writeln('Матрица А'); MatPrint(a,4); b:=MatrixRandom(m,p,-50,50); Writeln('Матрица B'); MatPrint(b,4); SetLength(c,n,p); Writeln('Матрица C'); MatProd(a,b,c); MatPrint(c,7) end.
1) В переменной a вычисляется количество четных цифр в числе x, в переменной b - количество нечетных цифр. Общее количество цифр в числе = 3+2=5. Наименьшее пятизначное число, удовлетворяющее условиям = 10001.
2) В переменной L вычисляется количество цифр в числе x, следовательно искомое число трехзначное. Значение 120 можно получить как результат 4*5*6 (все сомножетели >=1 и <=7). Так как в цикле x меняется по правилу x:=x div 8, то искомое число = 654(8) = 428(10).