Введем обозначения:
S-i - высказывание: ученик S (где S - первая буква фамилии) убирал i-й класс.
P: (Q-i, R-i), - ученик P высказал Q-i и R-i
S-i = F - высказывание S-i - ложно, а S-i = T высказывание S-i - истинно.
Тогда, по условию задачи:
1) A: (A-9, C-7)
2) K: (К-9, А-8)
3) С: (С-8, К-10),
где в каждой паре (Q-i, R-i) только одно из высказываний является верным (*).
Предположим в начале, что А-9 = T. Тогда из 2) и (*) следует, что (K-9 = F, А-8 = F) - противоречие, т.к. одно из высказываний в паре должно быть верным. Следовательно, предположение А-9 = T - не верно, и А-9 = F.
Пусть A-9 = F. Тогда из 1) и *) следует, что C-7 = T. Из 3) и *) следует, что C-8 = F. Откуда получим из 3), что К-10 = T. Значит, согласно 2) (К-9 = F, А-8 = T)
Итак, C-7 = T, К-10 = T и А-8 = T Следовательно, Савельев убирал 7-й класс, Костин - 10-й, Андреев - 8-й класс. Давыдов, следовательно, убирал оставшийся, 9-й класс (т.е. Д-9 = Т).
Поделитесь своими знаниями, ответьте на вопрос:
сообщение передается шифром в нем присутствуют только буквы из приведенного фрагмента кодовой таблицы САДИК
"вещественные числа p, b1, ..., bn, которые не превосходят по модулю 105" - К чему это условие? Если это условие включить в код, то вещественное число, такое как 123.45 уже больше модуля 105, а значит либо этого условия нету, раз уж у тебя в примере 123.45 включается в сумму, которая больше p, либо нет условия с модулем.
Я закомментировал условие проверки числа на с модулем 105 и программа работает так, как описано в примере.
Если захочешь добавить условие с модулем, то убери # и поставь табуляцию(несколько пробелов) перед s.append(k)
n = int(input()) while not 1<=n<=1000: #Ввод n, если не входит в диапазон, то ждет ввода снова n = int(input()) s = [] p = float(input()) for i in range(n): k = float(input()) # if k < abs(105): s.append(k) sum = 0 for i in s: if i > p: sum += i print(sum)