Ключевая идея: для поиска по логическим операторам результативность меняется по определённым правилкам.
Для AND (Принтер & Модем; Принтер & Модем & Мышь) добавление условий не увеличивает множество страниц, оно его только уменьшают. Значит: C ≤ B ≤ A где A = N(Принтер), B = N(Принтер & Модем), C = N(Принтер & Модем & Мышь).
Для OR (Принтер / Модем) результативность обычно не меньше любого из отдельных запросов и обычно максимальна среди вариантов: D ≥ max(A, B), где D = N(Принтер / Модем).
Имеем данные числа: 4000, 7000, 17000, 26000 — все разные и в порядке возрастания.
- Самое большее число 26000 должно соответствовать OR-запросу, то есть D = 26000.
- Оставшиеся три числа должны распределиться так, чтобы A ≥ B ≥ C. Единственное соответствие с учётом неравенств: A = 17000, B = 7000, C = 4000.
Итак, восстановленная расстановка результатов:
- Принтер / Модем → 26000
- Принтер → 17000
- Принтер & Модем → 7000
- Принтер & Модем & Мышь → 4000
Проверка:
- C ≤ B ≤ A: 4000 ≤ 7000 ≤ 17000 ✔
- D ≥ max(A, B): 26000 ≥ max(17000, 7000) ✔
Если нужно, могу привести аналогичную схему проверки для любого набора чисел и любых условий.