Программа содержит цикл с предусловием: «нашлось (2222)» или «нашлось (8888)». Значит, тело цикла будет выполняться, если окажется истинным хотя бы одна из них, в противном случае программа останавливается.
Рассмотрим тело цикла:
Если в строке есть подстрока 2222, то происходит ее замена на 8. Иначе (если в строке нет 2222), но есть подстрока 8888, то она заменяется на 2.
Исходная строка имеет 146 идущих подряд цифр 8 (888…8). Значит, условие цикла истинно (нашлось (8888)).
Так как в исходной строке нет подстроки 2222, то выполняется ветвь ИНАЧЕ и происходит замена подстроки 8888 на 2. Таким образом, после одного шага цикла строка будет иметь следующий вид: 2888…8 (цифр 8 теперь на 4 меньше, то есть 142).
Очевидно, после ещё трёх шагов цикла строка примет следующий вид: 2222888…8 (цифр 8 теперь ещё на 12 (4*3) меньше, то есть 130).
На следующем шаге при проверке условия «нашлось (2222)» получаем истину, поэтому выполняется ветвь ЕСЛИ и подстрока 2222 заменяется на 8 (цифр 8 теперь 131).
Не трудно заметить, что за 5 шагов в строке шестнадцать цифр 8 заменяются на одну 8 (т. е. удаляется 15 (146-131) восьмерок).
Выясним, сколько раз в исходной строке встретится по 15 восьмерок и какой будет строка после проведенных преобразований:
146 ÷ 15 = 9 (остаток 11).
Значит, строка имеет следующий вид: 8888 8888 888 (11 восьмерок).
В результате двух последних шагов цикла подстроки 8888 заменяются на двойки и окончательно получаем строку 22888.
Рассмотрим первое уравнение. В этом уравнении имеется импликация, которая принимает значение 0 для набора исходных значений 1 и 0. Значит, если x[i]=1, то для всех j>=i в решениях этого уравнения должно быть x[j]=1. Из данных рассуждений следует, что решениями первого уравнения будут (значения переменных перечислены в порядке x1, x2, x3, x4): 0000, 0001, 0011, 0111, 1111 (всего 5 наборов) Чтобы убедиться в этом можно также сделать таблицу истинности для первого уравнения (она должна содержать 2^4=16 строк). Очевидно, что второе и третье уравнение имеют по 5 аналогичных решений. Обозначим наборы значений переменных x, y и z соответственно X, Y и Z. Решением системы в этом случае будут наборы {X, Y, Z}, причем, учитывая 4-е уравнение, в состав этих наборов обязательно должен входить хотя бы один набор 0000. Пересчитываем все наборы: {0000, Y, Z} - так как для Yи Z имеется по 5 наборов, то получаем 25 решений (например, 1-й: 0000 0000 0000, 2-й: 0000 0000 0001 и т.д.) {X, 0000, Z} - для X и Z имеется, как уже показано, тоже по 5 наборов решений, но для исключения дублирования набор X=0000 исключаем из рассмотрения, значит, здесь будет 4*5 = 20 решений {X, Y, 0000} - рассуждая аналогичным образом (т.е. исключая дубликаты), получаем, что здесь добавляется ещё 4*4=16 решений. Итого: 25+20+16=61 набор.
22888
Объяснение:Проанализируем алгоритм:
Программа содержит цикл с предусловием: «нашлось (2222)» или «нашлось (8888)». Значит, тело цикла будет выполняться, если окажется истинным хотя бы одна из них, в противном случае программа останавливается.
Рассмотрим тело цикла:
Если в строке есть подстрока 2222, то происходит ее замена на 8. Иначе (если в строке нет 2222), но есть подстрока 8888, то она заменяется на 2.
Исходная строка имеет 146 идущих подряд цифр 8 (888…8). Значит, условие цикла истинно (нашлось (8888)).
Так как в исходной строке нет подстроки 2222, то выполняется ветвь ИНАЧЕ и происходит замена подстроки 8888 на 2. Таким образом, после одного шага цикла строка будет иметь следующий вид: 2888…8 (цифр 8 теперь на 4 меньше, то есть 142).
Очевидно, после ещё трёх шагов цикла строка примет следующий вид: 2222888…8 (цифр 8 теперь ещё на 12 (4*3) меньше, то есть 130).
На следующем шаге при проверке условия «нашлось (2222)» получаем истину, поэтому выполняется ветвь ЕСЛИ и подстрока 2222 заменяется на 8 (цифр 8 теперь 131).
Не трудно заметить, что за 5 шагов в строке шестнадцать цифр 8 заменяются на одну 8 (т. е. удаляется 15 (146-131) восьмерок).
Выясним, сколько раз в исходной строке встретится по 15 восьмерок и какой будет строка после проведенных преобразований:
146 ÷ 15 = 9 (остаток 11).
Значит, строка имеет следующий вид: 8888 8888 888 (11 восьмерок).
В результате двух последних шагов цикла подстроки 8888 заменяются на двойки и окончательно получаем строку 22888.
Из данных рассуждений следует, что решениями первого уравнения будут (значения переменных перечислены в порядке x1, x2, x3, x4):
0000, 0001, 0011, 0111, 1111 (всего 5 наборов)
Чтобы убедиться в этом можно также сделать таблицу истинности для первого уравнения (она должна содержать 2^4=16 строк).
Очевидно, что второе и третье уравнение имеют по 5 аналогичных решений.
Обозначим наборы значений переменных x, y и z соответственно X, Y и Z.
Решением системы в этом случае будут наборы {X, Y, Z}, причем, учитывая 4-е уравнение, в состав этих наборов обязательно должен входить хотя бы один набор 0000.
Пересчитываем все наборы:
{0000, Y, Z}
- так как для Yи Z имеется по 5 наборов, то получаем 25 решений (например, 1-й: 0000 0000 0000, 2-й: 0000 0000 0001 и т.д.)
{X, 0000, Z}
- для X и Z имеется, как уже показано, тоже по 5 наборов решений, но для исключения дублирования набор X=0000 исключаем из рассмотрения, значит, здесь будет 4*5 = 20 решений
{X, Y, 0000}
- рассуждая аналогичным образом (т.е. исключая дубликаты), получаем, что здесь добавляется ещё 4*4=16 решений.
Итого: 25+20+16=61 набор.