Собаки 50 Кошки 60 если в документах упоминаются только Собаки или только Кошки, то документов было бы 50+60 = 110 Однако Собаки + Кошки = 80 ( операция | или + ) следовательно есть 110-80=30 документов в которых есть [ Собаки & Кошки ]
Собаки 50 Лемуры 70 50+70=120 тоже самое и с Собаками и Лемурами [ Собаки | Лемуры ] = 100 120-100=20 документов в которых есть [ Собаки & Лемуры ]
Лемуры & (кошки | собаки) = 20 [ Лемуры & Кошки | Лемуры & Собаки ] = 20 из этого следует что документов в которых есть [Лемуры И Кошки] не больше 20
Кошки & (Собаки | Лемуры) = Кошки & Собаки | Кошки & Лемуры = 30 документов | (меньше или равно 20 документов) = 30 документов.
// Внимание! Если программа не работает, обновите версию!
begin
var (s,k,p,mx,mn):=(0,0,BigInteger(1),-30001,30001);
ReadSeqIntegerWhile(t->t<>0).Where(t->(t>0) and (t mod 5=0))
.Foreach(t->begin s+=t; k+=1; p*=t; mx:=Max(mx,t); mn:=Min(mn,t) end);
Writeln('S=',s,', K=',k,', П=',p,', min=',mn,', max=',mx)
end.
Пример
9095 -15199 5068 5310 2534 1136 11454 -17910 3480 -23949 24356 -5077 27301 -25057 -5789 24995 -16013 -5246 -5168 16256 17565 -24551 -229 22412 -3274 20445 3399 -11620 -21875 -18607 0
S=80890, K=6, П=1508567956180663412250000, min=3480, max=24995
Кошки 60
если в документах упоминаются только Собаки или только Кошки,
то документов было бы 50+60 = 110
Однако Собаки + Кошки = 80 ( операция | или + )
следовательно есть 110-80=30 документов в которых есть
[ Собаки & Кошки ]
Собаки 50
Лемуры 70
50+70=120
тоже самое и с Собаками и Лемурами
[ Собаки | Лемуры ] = 100
120-100=20 документов в которых есть
[ Собаки & Лемуры ]
Лемуры & (кошки | собаки) = 20
[ Лемуры & Кошки | Лемуры & Собаки ] = 20
из этого следует что
документов в которых есть [Лемуры И Кошки]
не больше 20
Кошки & (Собаки | Лемуры) =
Кошки & Собаки | Кошки & Лемуры =
30 документов | (меньше или равно 20 документов) = 30 документов.
ответ: 30 документов.