class Node:
def __init__(self, val):
self.l = None
self.r = None
self.v = val
class Tree:
def __init__(self):
self.root = None
def getRoot(self):
return self.root
def add(self, val):
if self.root is None:
self.root = Node(val)
else:
self._add(val, self.root)
def _add(self, val, node):
if val < node.v:
if node.l is not None:
self._add(val, node.l)
else:
node.l = Node(val)
else:
if node.r is not None:
self._add(val, node.r)
else:
node.r = Node(val)
def find(self, val):
if self.root is not None:
return self._find(val, self.root)
else:
return None
def _find(self, val, node):
if val == node.v:
return node
elif (val < node.v and node.l is not None):
return self._find(val, node.l)
elif (val > node.v and node.r is not None):
return self._find(val, node.r)
def deleteTree(self):
# garbage collector will do this for us.
self.root = None
def printTree(self):
if self.root is not None:
self._printTree(self.root)
def _printTree(self, node):
if node is not None:
self._printTree(node.l)
print(str(node.v) + ' ')
self._printTree(node.r)
# 3
# 0 4
# 2 8
tree = Tree()
tree.add(3)
tree.add(4)
tree.add(0)
tree.add(8)
tree.add(2)
tree.printTree()
print(tree.find(3).v)
print(tree.find(10))
tree.deleteTree()
tree.printTree()
Объяснение:
Расставляем нумерацию на корпусах и выводах функциональных элементов (см. вложение). выводы нумеруем 1, 2, 3, и нумерация приобретает вид (на примере DD1) DD1-1, DD1-2, DD1-3. Для удобства записи дефис не пишем, получается DD11, DD12, DD13.
2. Записываем входные сигналы и получаем выходные в соответствии с функцией каждого элемента.
Для DD1:
DD11 = A, DD12 = B,
DD13 = DD11 & DD12 = A & B
Для DD2:
DD21 = B, DD22 = C,DD23 = DD21 + DD22 = B + C
Для DD3:
DD31 = DD13= A & B, DD32 = DD23 = B + C
DD33 = DD31 & DD32 = (A & B) & ( B + C)
Для DD4:
DD41 = DD33 = (A & B) & ( B + C), DD42 = D
DD43 = DD41 + DD42 = (A & B) & ( B + C) + D
Результат: F(A,B,C,D) = (A & B) & ( B + C) + D. Пробуем упростить полученное выражение

F(A,B,D)=A & B + D (от С, как видим, функция не зависит).
4. Анализ
Схему можно существенно упростить. Удалить элементы DD2, DD3 и соединить выход DD1-3 со входом DD4-1
Поделитесь своими знаниями, ответьте на вопрос:
Вычислите сумму первых n элементов 1-1/2+1/3-1/4+1/5-1/6+
var i,n,s: nteger;
begin
read(n);
for i : = 1 to n do
if i mod 2 = 0 then s: = s-1/i;
else s: = s+1/i;
writeln(s);
end.