Var a:array[1..100,1..100] of integer; c:array[1..20,1..20] of real; b:array[1..20,1..20] of real; i,j,n,k:integer; t:real; r:integer; begin randomize; t:=0; Writeln('Введите порядок матрицы: '); readln(n); for i:=1 to n do for j:=1 to n do begin a[i, j] := random(10); end; for i:=1 to n do for j:=1 to n do begin b[i,j]:=1/i+j-1; end; for i:=1 to n do for j:=1 to n do begin for k:=1 to n do begin t :=t+a[i,k]*b[k, j]; end; c[i,j]:=t; t:=0; end; for i:=1 to n do begin for j:=1 to n do begin write(' ',c[i,j]:2:2); end; Writeln; end;
Объяснение:
Никогда такое не решал, но попробую
На выходе F=1
Идем с конца
До него & (конъюнктор) - это логическое AND
По таблице истинности находим, что На выходе 1, только если на входе 1 и 1, значит А=1
Теперь идем от А. Сначала инверсия, получаем 0
Далее 0 AND B и мы должны получить 1. И тут у меня ломается мозг.
0 AND что угодно - получим 0, а если так, то и F=0 станет.
Вот и логическая бомба.
Решения не вижу у этой задачи, если F=1
Еще функцию надо
F=(A)AND((NOT(A))AND(B))
1=1AND1, значит A=1 и
(NOT(A))AND(B)=1
тогда B=1 и NOT(A)=1.
но NOT(A)=1 и А=1 не может быть. Мы пришли к противоречию.
Утерян "лучший ответ". Нашедшему вернуть.