Трое судей используют электрическую схему тайного голосования. решение принимается в том случае, если проголосовало большинство.составить соответствующее логическое выражение. у кого сохранилось решение.
Пусть x,y,z - первый, второй и третий судьи соответственно. Решение будет принято, если проголосуют 1) 1,2 и 3 за 2) 1 и 2 за (3 против) 3) 1 и 3 за (2 против) 4) 2 и 3 за (1 против) Значит, получаем такую функцию: F = (x & y & z) or (x & y & not(z)) or (x & not(y) & z) or (not(x) & y & z)
Так как каждая сеть должна адресовать не менее 2000 узлов, последнее число может быть любым (256 вариантов). На 2-ом справа числе должна быть маска так, чтобы была свобода хотя бы в 8 номеров (256*8=2048). Но при этом чтобы все три адреса попали в три разных сети. Второе число должно быть 11111000(2) = 248(10). 1 сеть будет от 192.168.176.1 до 192.168.183.254 - в ней 192.168.181.171. 2 сеть будет от 192.168.160.1 до 192.168.167.254 - в ней 192.168.165.80 3 сеть будет от 192.168.168.1 до 192.168.175.254 - в ней 192.168.173.134. ответ: 255.255.248.0 для всех трех сетей.
// PascalABC.NET 3.2, сборка 1417 от 28.03.2017 // Внимание! Если программа не работает, обновите версию!
function Res(a:integer;op:char;b:integer):integer; begin case op of '+':Result:=a+b; '-':Result:=a-b; '*':Result:=a*b; '/':Result:=a div b end end;
begin var s:=ReadlnString('Вводите:'); var p:=s.Matches('(((\-)?\d+)|[\+\-\*\/])').ToArray; if p.Count<>5 then Writeln('Ошибка!') else begin var op1:=p[1].Value[1]; var op2:=p[3].Value[1]; var a:=p[0].Value.ToInteger; var b:=p[2].Value.ToInteger; var c:=p[4].Value.ToInteger; if (op1 in ['+','-']) and (op2 in ['*','/']) then Writeln('='+Res(Res(b,op2,c),op1,a)) else Writeln('='+Res(Res(a,op1,b),op2,c)) end end.
Решение будет принято, если проголосуют
1) 1,2 и 3 за
2) 1 и 2 за (3 против)
3) 1 и 3 за (2 против)
4) 2 и 3 за (1 против)
Значит, получаем такую функцию:
F = (x & y & z) or (x & y & not(z)) or (x & not(y) & z) or (not(x) & y & z)