#include <iostream>
using namespace std;
int a, b, numb;
bool init;
int main()
{
do {
cout << "Input a b: ";
cin >> a >> b;
if ((a > b) || (a <= 0) || (b <= 0))
cout << "Input error! Try again" << endl;
} while ((a > b) || (a <= 0) || (b <= 0));
for (int i = a; i <= b; i++) {
init = true;
numb = i;
do {
if (numb % 10 == 0)
init = false;
else if ((i / (numb % 10) * (numb % 10)) != i)
init = false;
numb /= 10;
} while (numb != 0);
if (init == true)
cout << i << " ";
}
return 0;
}
Конъюнкция истинна, если верны все конъюнкты. Значит, все импликации должны быть истинны.
Импликация истинна во всех случаях, кроме 1 → 0, поэтому если xk = 1, то и все x с номерами, большими k, единицы. Если записывать решение в виде строчки со значениями переменных от x1 до x5, получается 6 решений: 00000, 00001, 00011, 00111, 01111, 11111.
Аналогично, есть 6 решений для игреков: 11111, 11110, 11100, 11000, 10000, 00000.
x2 ∨ y2 = 1, значит, хотя бы одна из переменных x2, y2 истинна. Подсчитываем число комбинаций.
1) x2 истинна (решение 01111 или 11111). Подходят все 6 решений для игреков, по правилу произведения получаем 2 * 6 = 12 решений.
2) x2 ложна (4 решения). Подходят 4 решения для игреков (все, кроме 10000 и 00000). По правилу произведения 4 * 4 = 16 решений.
Всего 12 + 16 = 28 решений.