Для удобства перед 16ричным числом будем писать #
#x1yz - #1yzx = #2EB3
во второй позиции в разнице могла появиться #E только при заимствовании 1 из высшего разряда. Потому x-1-1 = 2 => x=4
#41yz - #1yz4 = #2EB3
z - 4 = 3 (очевидно что заема 1 нет) => z = 7
#41y7 - #1y74 = #2EB3
y - 7 = #B (очевидно что есть заем 1) => y + #10 - 7 = #B, y = #B + 7 - #10 = 2
#4127 - #1274 = #2EB3
Ответ #4127
Вот, решил, что лучше в файлах отправить, проще так х)
Const
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.
<u><em>Тестовое решение:</em></u>
Введите количество строк и столбцов матрицы: 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
#include <cstdlib>#include <iostream>#include <iomanip>#include <cmath>
using namespace std;
int main(){ setlocale(0, ""); double x, y, a, b, xk, xn, dx; a = 1.4; b = 2.5; cout << "Ââåäèòå xn,xk, dx = " << endl; cin >> xn; cin >> xk; cin >> dx; x = xn; cout << "Tabl" << endl; cout << "+-----------+" << endl; cout << "¦ x ¦ y ¦" << endl; while (x <= xk) { y = (log10(a*x*x+b))/(a*x+1); cout << "+-----+-----¦" << endl; cout.setf(ios::fixed); cout.precision(3); cout << "¦" << x << "¦"<< y << "¦" << endl; x = x + dx; } cout << "+-----------+"; system("pause");}